Ответ 1
В Symfony2 нет метода предварительного действия. Вы должны использовать прослушиватели событий для этой цели.
Я хотел бы выполнить код перед всеми действиями в моем проекте (для вычисления важной глобальной переменной). Как установить функцию предварительного действия в моих контроллерах?
В Symfony2 нет метода предварительного действия. Вы должны использовать прослушиватели событий для этой цели.
Вероятно, использование прослушивателей - более элегантный способ реализовать "после инициализированных задач контроллера", но есть более упрощенный способ сделать это:
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
для выполнения некоторых задач после установки контейнера.
Вы должны особенно прочитать эту страницу документации: http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html