Расширить задачу Symfony в плагине - PullRequest
0 голосов
/ 02 марта 2011

Я работаю с плагином в Symfony 1.4 и хотел бы добавить слушателя для задачи из другого плагина.Когда пользователь делает php symfony doctrine:build, я хочу, чтобы мой плагин запускал собственную задачу.Где / как мне зарегистрировать слушателя?У меня не было никакого успеха с http://www.symfony -project.org / gentle-введение / 1_4 / ru / 17-Extending-Symfony

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 марта 2011

На самом деле вы можете подключить свой код к любой задаче 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'));  
  }
1 голос
/ 02 марта 2011

Я не думаю, что для этого есть подходящее событие (например, очистка кэша).

Мое предложение будет либо принять, что это должно быть две задачи, либо, если вы используете сборку,часто создайте задачу-обертку, чтобы сначала вызывать одну, а затем другую - doctrine: build - хороший пример того, как это сделать.Или bash / batch скрипт!

...