Symfony2,Sonata:去掉UserBundle中不必要的字段


Symfony2, Sonata : Getting rid of unnecessary fields in UserBundle

我不想使用Sonata User捆绑包提供的一些默认字段。如facebook、gplus或twitter字段。

我用Easy Extends扩展了Application''Sonata''UserBundle中的SonataUserBundle。

并创建了一个新的用户实体,扩展了BaseUser:

class User extends BaseUser

我删除了xml原则配置,因为我使用的是注释。

因此,它确实识别了我的自定义字段,如"城市"answers"地址"。

但是我有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的User模型中即可。