Я хотел бы не использовать некоторые поля по умолчанию, предоставляемые пакетом Sonata User. Такие как поля facebook, gplus или twitters.
Я расширил SonataUserBundle в приложении \ Sonata \ UserBundle с помощью Easy-Extends.
И создал новый объект User, расширяющий 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;
}
Соната UserBundle, кажется, расширяет FOSUserBundle:
use FOS\UserBundle\Entity\User as AbstractedUser;
use Sonata\UserBundle\Model\UserInterface;
abstract class User extends AbstractedUser implements UserInterface
Итак, я думаю, вы должны быть в состоянии сделать то же самое; вместо расширения пользователя Sonata расширьте FOSUser и реализуйте UserInterface. Таким образом, вы сможете избавиться от нежелательных полей, если они находятся в модели пользователя сонаты.
Других решений пока нет …