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

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

Ответы на вопрос(3)

Решение Вопроса

Там нетpre-action метод в Symfony2. Вы должны использоватьслушатели событий для этой цели.

 16 янв. 2018 г., 12:00
Мне нужно добавить, что хотя сам по себе метод предварительного действия не существует, событиеkernel.controller это, вероятно, то, что вы хотите.
 bux06 июн. 2012 г., 14:01
чертовски хорошо Благодарности;)

Вы должны особенно прочитать эту страницу документации:http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html

Возможно, использование слушателей является более элегантным способом реализации «после инициализации контроллера», но есть более упрощенный способ сделать это:

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 способ выполнения некоторых задач после установки контейнера.

 02 мар. 2015 г., 14:40
Это необходимоuse Symfony\Component\DependencyInjection\ContainerInterface;
 bux24 окт. 2013 г., 12:44
Интересно! Я проверю это :)
 08 авг. 2015 г., 13:18
Отличный ответ. Оно работает. Я выберу этот путь.
 19 дек. 2016 г., 10:55
@ Beno & # xEE; t: Не могли бы вы объяснить, почему это так плохо? Большое спасибо !
 24 июн. 2016 г., 09:57
Пожалуйста, не делайте этого, это очень, очень, очень, очень, очень плохой способ сделать это.

Ваш ответ на вопрос