如何在不拒绝控制器访问的情况下使用投票器

问题描述 投票:0回答:1

我正在使用 symfony 4 voters,并且喜欢它如何授予或拒绝对控制器方法的权限。

我现在想要实现的是检查用户是否有权在我的树枝视图中查看特定块。我有一个名为 Web 的投票者:

我想做

{% if isGranted(‘Web’) %}{% endif %}

这可能吗?否则,我想从控制器的变量中获取投票者的结果,该变量将传递到视图,而无需拒绝对方法/页面的访问。

这可能吗?

谢谢。

php symfony twig symfony4 symfony-voter
1个回答
2
投票

我建议您将块导出到另一个模板中,然后使用渲染功能将其包含在原始模板中

{{ render(controller('App\\Controller\\MyController::myRenderMethod')) }}

然后在 MyController 中你可以这样做:


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class MyController extends AbstractController
{
    public function myRenderMethod(Request $request)
    {
        if ($this->isGranted($attributes, $subject)) {
            //call your render method here
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.