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。这样你应该能够摆脱不需要的字段,只要它们在奏鸣曲的用户模型中。