如何在不拒绝访问控制器的情况下使用Symfony 4选民

时间:2019-02-15 10:41:23

标签: php symfony twig symfony4 symfony4-voter

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

我现在要实现的目的是检查用户是否有权在我的树枝视图中查看特定的块。我有一个叫Web的选民:

我想做{% if isGranted(‘Web’) %}{% endif %}

这可能吗?否则,我想从控制器获取一个变量的投票结果,该变量会“传递给视图,而不必拒绝访问方法/页面。

这可能吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

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

{{ 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
        }
    }
}