我想在我的项目中的所有操作之前执行代码(计算一个重要的全局变量)。如何在我的控制器中设置预操作功能?
问问题
30988 次
3 回答
28
Symfony2 中没有pre-action方法。为此,您必须使用事件侦听器。
于 2012-06-06T11:59:43.867 回答
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
在容器设置后重写方法来执行一些任务。
于 2013-10-24T05:06:16.793 回答
11
于 2013-04-03T10:53:12.590 回答