簡體   English   中英

symfony2如何用FosuserBundle覆蓋User類?

[英]symfony2 how to override the User class with FosuserBundle?

我的問題很簡單,但是我搜索了一個小時卻沒有成功,我想對UserEntity添加一些約束。 例如,我想限制用戶名的長度

我認為最好的方法是不要接觸供應商中的FOS。 我已經使用自己的layout.html等創建了自己的userBundle ...但是我無法覆蓋FosuserBundle中已經存在的屬性(它正在處理覆蓋我的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”上的字段“用戶名”或鑒別符列映射中重復定義。

謝謝你給我的任何想法

嘗試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
{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM