我不想使用Sonata用户捆绑包提供的某些默认字段。如facebook,gplus或twitters字段。
我使用Easy-Extends在Application \ Sonata \ UserBundle中扩展了SonataUserBundle。
并创建了一个扩展BaseUser的新用户实体:
class User extends BaseUser
我删除了xml doctrine配置,因为我正在使用注释。
因此它确实识别我的自定义字段,例如“city”和“address”。
但我拥有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;
}
答案 0 :(得分: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。这样你就可以摆脱不受欢迎的领域,只要它们在奏鸣曲的用户模型中。