首页 文章

symfony2如何使用FosuserBundle覆盖User类?

提问于
浏览
2

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

我认为最好的方法是不要在供应商中触及FOS . 我用自己的layout.html等创建了我自己的userBundle ...但是我不能覆盖已经存在于FosuserBundle中的attribut(它正在为布局覆盖btw工作,我的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]在字段或标识符列映射中实体'Diane \ UserBundle \ Entity \ User'上的列'username'的重复定义 .

谢谢你能给我的任何想法

1 回答

  • 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
    {
    

相关问题