symfony2如何使用FosuserBundle覆盖User类?

时间:2014-05-08 10:53:53

标签: symfony override fosuserbundle

我的问题很简单,但我搜索了一个小时没有成功,我想为UserEntity添加一些约束。例如,我想限制用户名的长度

我认为最好的方法是不要在供应商中触及FOS。我用自己的layout.html等创建了自己的userBundle ...但是我不能覆盖已经存在于FosuserBundle中的attribut(它正在为布局覆盖而工作,因为我的userBundle是FOS的子代) 有趣的是" id"

没有问题

我的用户实体:

<?php

namespace Diane\UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**

 * User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Diane\UserBundle\Entity\UserRepository")
 */
class User extends BaseUser
{
    /**

     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="username", type="string", length=10)
     */
    protected $username;

}

Fos用户模型:

<?php

namespace FOS\UserBundle\Model;

use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;

abstract class User implements UserInterface, GroupableInterface
{
    protected $id;

    /**
     * @var string
     */
    protected $username;


...

}

我已经尝试删除:

/**
 * @var string
 */

错误讯息:

  

Doctrine \ ORM \ Mapping \ MappingException]列的重复定义   &#39;用户名&#39; on entity&#39; Diane \ UserBundle \ Entity \ User&#39;在一个领域或   鉴别器列映射。

感谢你能给我的任何想法

1 个答案:

答案 0 :(得分:0)

尝试使用AttributeOverrides Doctrine注释:

/**
 * User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Diane\UserBundle\Entity\UserRepository") / class User extends 
 *
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="username",
 *          column=@ORM\Column(
 *              name     = "username",
 *              type     = "string",
 *              length   = 10
 *          )
 *      )
 * })
 *
 */
class User extends BaseUser
{