Symfony2,Sonata:摆脱UserBundle中不必要的字段

时间:2015-02-12 10:51:57

标签: php symfony doctrine-orm sonata-user-bundle sonata

我不想使用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;

}

1 个答案:

答案 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。这样你就可以摆脱不受欢迎的领域,只要它们在奏鸣曲的用户模型中。