Как визуализировать шаблон веточки внутри избирателя?

Я создал избирателя по имени IsVerifiedVoter. Внутри я хочу отрендерить страницу ветки.

Я старался $this->container->get('templating')->renderResponse("notActive/disabled.html.twig");Но это дает мне эту ошибку:

Примечание: свойство Undefined: App\Security\Voter\IsVerifiedVoter::$container

Я тоже пробовал return $this->render("notActive/disabled.html.twig");

Но это дает мне эту ошибку:

Попытка вызвать неопределенный метод с именем "render" класса "App\Security\Voter\IsVerifiedVoter".

Итак, как я могу отобразить страницу ветки внутри моего избирателя?

Вот код моего избирателя:

<?php

namespace App\Security\Voter;

use App\Entity\User;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;

class IsVerifiedVoter extends Voter
{
    public const ACTIVE = 'isActive';
    protected function supports($attribute, $subject)
    {
        return $attribute === self::ACTIVE;
    }

    protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
    {
        $user = $token->getUser();

        if (($user instanceof User) and (!$user->isVerified() ) ) {
            
            return $this->container->get('templating')->renderResponse("notActive/disabled.html.twig");
        }
    
        return true;
    }
}

1 ответ

Нет смысла получать шаблон веточки внутри Voter, но получить шаблон веточки вне контроллера в любом классе, даже вне контроллера Voter:

use Twig\Environment;

class MyClassName
{
    private $twig;

    public function __construct(Environment $twig)
    {
        $this->twig = $twig;
    }


    public function myFunction()
    {
        // example
        $temaplte = $this->twig->render('emails/send_password_token.html.twig');
    }

}
Другие вопросы по тегам