Plugins 扩展插件中的symfony任务

Plugins 扩展插件中的symfony任务,plugins,symfony1,listener,task,Plugins,Symfony1,Listener,Task,我正在使用symfony 1.4中的一个插件,希望为另一个插件中的任务添加一个侦听器。当用户执行php symfony原则:build时,我希望我的插件运行自己的任务。在哪里/如何注册侦听器?我在这方面没有取得任何成功 谢谢大家! 我认为没有合适的事件(比如缓存清除事件) 我的建议是要么接受它需要两个任务,要么如果您经常使用build,那么创建一个包装器任务,先调用一个,然后调用另一个——原则:build是一个很好的例子。或者一个bash/批处理脚本 实际上,您可以将代码挂接到任何symfony

我正在使用symfony 1.4中的一个插件,希望为另一个插件中的任务添加一个侦听器。当用户执行
php symfony原则:build
时,我希望我的插件运行自己的任务。在哪里/如何注册侦听器?我在这方面没有取得任何成功


谢谢大家!

我认为没有合适的事件(比如缓存清除事件)


我的建议是要么接受它需要两个任务,要么如果您经常使用build,那么创建一个包装器任务,先调用一个,然后调用另一个——原则:build是一个很好的例子。或者一个bash/批处理脚本

实际上,您可以将代码挂接到任何symfony任务。看看sfBaseTask::doRun方法。任何任务在执行时都会发出两个事件: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'));  
  }

“创建一个包装器任务,先调用一个,然后调用另一个”——我认为这就是解决方案。非常感谢。