2014-11-19 4 views
4

FOSUserBundle의 사용자 매핑의 두 가지 속성을 재정의하려고합니다. Invalid field override named 'email''email'이라는 필드가 올바르지 않습니다.

오류는 여기서 발생합니다 :

use FOS\UserBundle\Model\User as BaseUser; 
... 
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 

/** 
* @ORM\Entity 
* @ORM\HasLifecycleCallbacks 
* @ORM\Table(name="user") 
* @UniqueEntity(
*  fields={"emailCanonical", "zone"}, 
*  errorPath="email", 
*  message="This email address is already in use." 
*) 
* @ORM\AttributeOverrides({ 
*  @ORM\AttributeOverride(name="email", [email protected]\Column(type="string", name="email", length=255, unique=false, nullable=false)), 
*  @ORM\AttributeOverride(name="emailCanonical", [email protected]\Column(type="string", name="emailCanonical", length=255, unique=false, nullable=false)) 
* }) 
*/ 
class User extends BaseUser 
{ 
    ... 

모든 내가 접근 발생하는 경우를 제외하고, 잘 동작하는 것

// Doctrine\ORM\Mapping\ClassMetadataInfo 

public function setAttributeOverride($fieldName, array $overrideMapping) 
{ 
    if (! isset($this->fieldMappings[$fieldName])) { 
     throw MappingException::invalidOverrideFieldName($this->name, $fieldName); 
    } 

여기, $this->fieldMappings 만 포함을 자녀 사용자의 필드와 부모 (매핑 된 수퍼 클래스)가 아닙니다.

단서가 있습니까?

답변

0

는 편집 :

네 말이 맞아, 그냥 추측

<mapped-superclass name="FOS\UserBundle\Model\User"> 
    ... 
    <field name="usernameCanonical" column="username_canonical" type="string" length="255" unique="true" /> 
    <field name="email" column="email" type="string" length="255" /> 

FOSUserBundle/자원/설정/교리/모델/User.orm.xml의 매핑 정보가 ...있다 : 어쩌면이 XML ORM 구성이 제대로 구문 분석되지 않습니까? 또는 XML에서 덮어 쓰기를 수행해야합니까?

+0

음, FOSUserBundle 문서는 달리 https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/doctrine.md#replacing-the-mapping 제안하는 것 -of-the-bundle –

+0

매핑 덮어 쓰기를 XML에 넣으려고 했습니까? – Rob

0

나는 이것이 오래된 게시물 인 것을 알고 있지만, 나는 그것이 내게 도움이되었거나, 다른 누군가에게 도움이 될지도 모르는 sulution을 발견했다.

글쎄, 난 같은 문제를했고 나는 교리 entity_manager 사용자 정의 관리자에서 선언 파일 config.yml에서 fos_user에 대한 사용자 지정 관리자를 사용하고 난 FOS_userBundle에 매핑을 선언,하지만 실종되었다 FOS_user을 알리는 것입니다 우리는 diffrent 관리자를 사용하고는 추가 있다고 :

fos_user :
---- db_driver : ORM
---- model_manager_name : MyCustom_Manager

6

나는이 문제를 해결하기 위해 관리하는 방법 입력란이 잘못되었습니다. 클래스 [클래스]에 대해 [필드]라는 override는 클래스 I에 덮어 쓴 특성을 추가하여 덮어 씁니다.

나는 버전 심포니의 v2.7.8교리의 v1.6.1을 사용하고 있습니다.

예 :

<?php 

use FOS\UserBundle\Model\User as BaseUser; 

/** 
* @ORM\Entity 
* @ORM\Table(name="user") 
* 
* @ORM\HasLifecycleCallbacks 
* @ORM\AttributeOverrides({ 
*  @ORM\AttributeOverride(name="usernameCanonical", 
*   [email protected]\Column(
*    type="string", 
*    name="username_canonical", 
*    length=255, 
*    unique=false 
*  ) 
* ) 
* }) 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(type="string", name="username_canonical", length=255, unique=false) 
    */ 
    protected $usernameCanonical; 
    ... 
} 
+3

이 경우 다른 오류가 "열 전자 메일에 중복 매핑" –

관련 문제