我正在使用symfony 1.4中的插件,并希望为另一个插件中的任务添加一个侦听器。当用户执行php symfony doctrine:build
时,我希望我的插件能够运行自己的任务。我在哪里/如何注册听众?我对http://www.symfony-project.org/gentle-introduction/1_4/en/17-Extending-Symfony
谢谢!
答案 0 :(得分:1)
我认为没有合适的事件(比如缓存清除)。
我的建议是接受它需要两个任务,或者如果你经常使用构建,创建一个包装器任务先调用一个然后调用另一个 - doctrine:build是如何执行此操作的一个很好的例子。或者bash / batch脚本!
答案 1 :(得分:1)
实际上,您可以将代码挂钩到任何symfony任务。看看sfBaseTask :: doRun方法。执行任何任务时,会发出2个事件:command.pre_command和command.post_command。
创建一个类来存储代码,例如:
class toolkitEvents
{
static public function commandPostEventHook(sfEvent $event)
{
$task = $event->getSubject();
if ($task->getFullName() === 'doctrine:build')
{
//do stuff or call another task
}
}
并在初始化插件时将此方法连接到调度程序:
class yourPluginConfiguration extends sfPluginConfiguration
{
public function initialize()
{
$this->dispatcher->connect('command.post_command', array('toolkitEvents', 'commandPostEventHook'));
}