Как использовать 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
}
}
}