gpt4 book ai didi

symfony-2.8 - Symfony2 : Pass a second object to a Voter

转载 作者:行者123 更新时间:2023-12-04 02:44:00 24 4
gpt4 key购买 nike

我正在使用投票者来确定登录用户是否可以编辑给定对象。其中一个标准需要与另一个对象进行比较,但我不确定如何将其传递给选民。我不能使用构造函数参数,因为它不是预定义的值。

基本上我想做这样的事情:

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

任何帮助,将不胜感激。

最佳答案

有点晚了,但也许这个答案会对某人有所帮助。

您可以做的一件事是传递单个 $subject 对象的一组值实例。

例如,从 Twig 中,您将函数用作:

{% set data =  { 'subject': yourRealSubject, 'compared_object': comparedObject } %}
{% if is_granted('can_edit', data) %}
...
...
{% endif %}

(您可以从 PHP 代码中执行相同的操作)。

那么在你的选民中:
class MyVoter  extends Voter{


// ...

protected function voteOnAttribute($attribute, $data, TokenInterface $token) {

$subject = isset($data['subject']) ? $data['subject'] : null;
$comparedObject = isset($data['compared_object']) ? $data['compared_object'] : null;

if(!$subject || !$subject instanceof \Namespace\To\Subject){
throw new Exception('Missing or invalid subject!!!'');
}

// do whatever you want ...

}
}

关于symfony-2.8 - Symfony2 : Pass a second object to a Voter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39999301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com