Подтвердить что ты не робот

Выполнить код перед действием контроллера

Я хотел бы выполнить код перед всеми действиями в моем проекте (для вычисления важной глобальной переменной). Как установить функцию предварительного действия в моих контроллерах?

4b9b3361

Ответ 2

Вероятно, использование прослушивателей - более элегантный способ реализовать "после инициализированных задач контроллера", но есть более упрощенный способ сделать это:

use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Override method to call #containerInitialized method when container set.
 * {@inheritdoc}
 */
public function setContainer(ContainerInterface $container = null)
{
    parent::setContainer($container);
    $this->containerInitialized();
}

/**
 * Perform some operations after controller initialized and container set.
 */
private function containerInitialized()
{
     // some tasks to do...
}

Вставьте этот код в свой контроллер или, если хотите, вы можете даже вставить его в базовую родительскую абстракцию ваших контроллеров.

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