Задачи Symfony: получение выходных данных модуля / действия - PullRequest
0 голосов
/ 30 июня 2010

Можно ли зафиксировать вывод действия в задаче?

Пример:

FooAction
{
    executeIndexSuccess()
}

и в моей задаче:

FooAction-> Индекс

Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 30 июня 2010

Да.В методе execute() вашей задачи:

sfContext::createInstance($this->configuration);
$output = sfContext::getInstance()->getController()->getPresentationFor("module", "action");

Результирующий вывод действия и связанного представления будет сохранен в $output.

Если вашему действию требуются переменные, устанавливаемые в сеансвы также можете делать такие вещи, как:

sfContext::getInstance()->getUser()->setAttribute("mySessionVar", 123);
sfContext::getInstance()->getUser()->setFlash("myFlashVar", "foo");

перед вызовом getPresentationFor(), чтобы переменные присутствовали при выполнении действия.

2 голосов
/ 30 июня 2010

Вы не должны делать это в задании! Действия контроллера не строятся для этой цели. Просто рефакторинг вашего контроллера. Извлеките код, которым вы хотите поделиться с задачей, в отдельный класс и используйте этот класс в своих действиях и задаче! Имейте в виду, что sfContext не является надежным источником информации. Содержимое этого объекта зависит от того, как запущено ваше приложение (Commandline! = HTTP)

...