2015-02-12 3 views
1

Я бы не хотел использовать некоторые поля по умолчанию, предоставляемые пакетом User Sonata. Такие как поля facebook, gplus или twitters.Symfony2, Sonata: избавление от ненужных полей в UserBundle

Я расширил SonataUserBundle в приложении \ Sonata \ UserBundle с помощью Easy-Extends.

И создал новый пользовательский объект extenting в BaseUser:

class User extends BaseUser 

Я удалил XML доктрину конфигурации, так как я использую аннотацию.

Таким образом, он распознает мои пользовательские поля, такие как «город» и «адрес».

Но у меня есть все поля из BaseUser, как я могу избавиться от ненужных полей?

<?php 
namespace Application\Sonata\UserBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Sonata\UserBundle\Entity\BaseUser as BaseUser; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user_user") 
*/ 
class User extends BaseUser 
{ 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=64, nullable=false, name="city") 
    */ 
    protected $city; 

    /** 
    * @ORM\Column(type="string", length=255, nullable=false, name="address") 
    */ 
    protected $address; 

} 
+1

Не расширяйте BaseUser? Внедрить его интерфейс –

ответ

1

Sonata UserBundle кажется продлить FOSUserBundle:

use FOS\UserBundle\Entity\User as AbstractedUser; 
use Sonata\UserBundle\Model\UserInterface; 

abstract class User extends AbstractedUser implements UserInterface 

Так что, я думаю, вы должны быть в состоянии сделать то же самое; вместо расширения пользователя Sonata, расширить FOSUser и реализовать UserInterface. Таким образом, вы должны быть в состоянии избавиться от нежелательных полей, если они находятся в модели пользователя сонаты.

+0

Спасибо, он действительно хорошо работал;). Я столкнулся с некоторыми проблемами, потому что некоторые методы из папки поставщика не были реализованы, но я просто должен был добавить их в свой пользовательский объект. – Brieuc