Как использовать Symfony 4 Voters, не отказывая в доступе к контроллеру

Я использую избирателей Symfony 4 и мне нравится, как это работает для предоставления или отказа в доступе к методу контроллера.

То, чего я сейчас пытаюсь достичь, - это проверить, есть ли у пользователя разрешение на просмотр определенного блока в моем представлении ветки. У меня есть избиратель по имени Веб:

Я хотел бы сделать {% if isGranted(‘Web’) %}{% endif %}

Это возможно? в противном случае я хотел бы получить результат моего избирателя в переменной от контроллера, который будет передаваться в представление без необходимости запретить доступ к методу / странице.

Это возможно?

Благодарю.

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
        }
    }
}
Другие вопросы по тегам