2016-10-12 7 views
1

유권자를 사용하여 로그인 한 사용자가 주어진 객체를 편집 할 수 있는지 여부를 결정합니다. 기준 중 하나는 다른 객체와의 비교가 필요하지만 유권자에게이 객체를 전달하는 방법을 잘 모르겠습니다. 미리 정의 된 값이 아니므로 생성자 인수를 사용할 수 없습니다.Symfony2 : 두 번째 객체를 유권자에게 넘겨주십시오.

기본적으로 나는 같은 것을 할 싶습니다 :

protected function voteOnAttribute($attribute, $subject, TokenInterface $token, $comparedObject) 
      { if ($subject->getProperty1 == $comparedObject) 
    {return true;} 
    } 

어떤 도움을 주시면 감사하겠습니다.

답변

0

내 제안은 "비교 대상"을 넣을 수있는 "제목"의 추가 속성을 만드는 것입니다.

// Inside action. 
public function myBestAction(Request $request) 
{ 
    // My super code... e.g. we have received from ORM a $post. 

    // Create property on the fly to put $comparedObject. 
    // Perhaps creating property dynamically is not good practice, therefore you can create permanent with getter and setter. 
    $post->comparedObject = $comparedObject; 
    $this->isGranted('can_edit', $post); 
} 

// Now inside voter. 
private function canEdit($subject) 
{ 
    $comparedObject = $subject->comparedObject; 

    // Compare $subject(post) with $comparedObject and return true or false... 
}