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 - 奏鸣曲 Datagrid 过滤器操作符转换为教义_orm_class 字段失败
symfony2:奏鸣曲 userbundle + fos userbundle + mongodb => 错误“sonata.user.mongodb.user_manager”不存在