Как использовать Symfony 4 Voters, не отказывая в доступе к контроллеру - PullRequest
0 голосов
/ 15 февраля 2019

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

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

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

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

Возможно ли это?

Спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Я предлагаю вам экспортировать свой блок в другой шаблон, затем включить его в исходный шаблон с помощью функции рендеринга

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