2012-08-30 1 views
1

나는 간단한 후 UserInterface 엔티티가 : 역할 인터페이스 및 역할 관리

function getRoles() 
{ 
    return $this->roles->toArray(); 
} 

및 역할 엔티티 인터페이스와 많은 관계로 많은으로

/** 
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"}) 
*/ 
protected $roles; 

I 양식 유형과 사용자 역할을 관리하려고

:
public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder->add('roles'); 
} 

심포니 나에게 오류를 반환

Expected argument of type "Doctrine\Common\Collections\Collection", "array" given

오류가 배열을 반환하는 엔티티 사용자의 getRoles 메소드에 있지만 getRoles가 인터페이스의 메소드이며 배열을 반환해야한다는 것도 알고 있습니다!

누구나 좋은 해결책이 있습니까?

  • 다른 하나는 당신의 $ 역할 재산
  • 이후의 게터입니다

    • 하나는 역할의 목록을 반환 후 UserInterface 인터페이스의 기능입니다 :

    답변

    5

    는 두 getRoles의 기능을 가지고 두 함수는 모두 동일하게 호출 될 수 없으며 서로 다른 유형을 반환해야하기 때문에 동일한 함수가 될 수 없으며 첫 번째 함수가 인터페이스를 따라야하므로 두 번째 함수의 이름을 변경하는 것이 좋습니다. 이 속성의 이름을 반영해야하므로이 이름을 변경해야합니다.

    /** 
    * @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"}) 
    */ 
    protected $userRoles; 
    
    /* interface */ 
    
    function getRoles() 
    { 
        return $this->userRoles->toArray(); 
    } 
    
    /*getter*/ 
    
    function getUserRoles() { 
        return $this->userRoles; 
    } 
    

    다음

    public function buildForm(FormBuilder $builder, array $options) 
    { 
        $builder->add('userRoles'); 
    } 
    
    :

    그래서, 당신은 같은 것을 할 필요가