Symfony2,奏鸣曲:摆脱 UserBundle 中不必要的字段

Posted

技术标签:

【中文标题】Symfony2,奏鸣曲:摆脱 UserBundle 中不必要的字段【英文标题】:Symfony2, Sonata : Getting rid of unnecessary fields in UserBundle 【发布时间】:2015-04-13 01:48:53 【问题描述】:

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

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

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

class User extends BaseUser

因为我使用了注释,所以我删除了 xml 学说配置。

所以它确实可以识别我的自定义字段,例如“城市”和“地址”。

但是我有 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;


【问题讨论】:

不扩展 BaseUser?实现它的接口 【参考方案1】:

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

【讨论】:

谢谢,它运行良好;)。我遇到了一些麻烦,因为供应商文件夹中的一些方法没有实现,但我只需要将它们添加到我的用户实体中。

以上是关于Symfony2,奏鸣曲:摆脱 UserBundle 中不必要的字段的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 多对多奏鸣曲 admin model_list

Symfony2:奏鸣曲实体中的自定义标识符

上传图片时如何在 symfony2 奏鸣曲媒体中设置最大上传大小

Symfony2 - 奏鸣曲 Datagrid 过滤器操作符转换为教义_orm_class 字段失败

symfony2:奏鸣曲 userbundle + fos userbundle + mongodb => 错误“sonata.user.mongodb.user_manager”不存在

Symfony2 - 扩展或替换 SonataUserBundle 注册表单