我想在我的项目中的所有操作之前执行代码(以计算一个重要的全局变量)。 如何在我的控制器中设置预执行功能?
答案 0 :(得分:26)
Symfony2中没有预操作方法。您必须为此目的使用event listeners。
答案 1 :(得分:16)
可能使用侦听器是实现“在控制器初始化任务之后”的更优雅方式,但还有更简单的方法:
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
方法在容器设置后执行某些任务。
答案 2 :(得分:11)