2

次のリンクでわかるように、isGranted()を呼び出すときにsupportsClassメソッドとsupportsAttributeメソッドは呼び出されません。

これらのメソッドは他の場所で呼び出されていますか?

なぜそれらはインターフェースの一部なのですか?

4

1 に答える 1

0

有権者はクラスをチェックする必要があるため、これは正常な動作のように聞こえます。

クラスをチェックするための解決策は次のとおりです。

function vote(TokenInterface $token, $object, array $attributes)
{   
    $user = $token->getUser();

    //sometime the object is a class or a instance of Request
    if($object instanceOf \Symfony\Component\HttpFoundation\Request ){
        return VoterInterface::ACCESS_ABSTAIN;   
    }else{
        $class = $object->getType();
        if($class == 'Vendor\\MyBundle\\Entity\\MyEntity'){
           return VoterInterface::ACCESS_GRANTED; 
        }
    }

    return VoterInterface::ACCESS_DENIED;   
}
于 2012-07-13T10:44:27.257 に答える