Symfony2、奏鸣曲:摆脱 UserBundle 中不必要的字段
Symfony2, Sonata : Getting rid of unnecessary fields in UserBundle
我不想使用 Sonata 用户包提供的一些默认字段。例如 facebook、gplus 或 twitters 字段。
我在 Application\Sonata\UserBundle 中使用 Easy-Extends 扩展了 SonataUserBundle。
并创建了一个扩展 BaseUser 的新用户实体:
class User extends BaseUser
我删除了 xml 学说配置,因为我正在使用注释。
所以它确实识别了我的自定义字段,例如 "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;
}
Sonata UserBundle 似乎扩展了 FOSUserBundle:
use FOS\UserBundle\Entity\User as AbstractedUser;
use Sonata\UserBundle\Model\UserInterface;
abstract class User extends AbstractedUser implements UserInterface
所以,我认为你应该也能做到;不要扩展 Sonata User,而是扩展 FOSUser 并实现 UserInterface。这样你应该能够摆脱不需要的字段,只要它们在奏鸣曲的用户模型中。
我不想使用 Sonata 用户包提供的一些默认字段。例如 facebook、gplus 或 twitters 字段。
我在 Application\Sonata\UserBundle 中使用 Easy-Extends 扩展了 SonataUserBundle。
并创建了一个扩展 BaseUser 的新用户实体:
class User extends BaseUser
我删除了 xml 学说配置,因为我正在使用注释。
所以它确实识别了我的自定义字段,例如 "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;
}
Sonata UserBundle 似乎扩展了 FOSUserBundle:
use FOS\UserBundle\Entity\User as AbstractedUser;
use Sonata\UserBundle\Model\UserInterface;
abstract class User extends AbstractedUser implements UserInterface
所以,我认为你应该也能做到;不要扩展 Sonata User,而是扩展 FOSUser 并实现 UserInterface。这样你应该能够摆脱不需要的字段,只要它们在奏鸣曲的用户模型中。