Получение контекста приложения / модуля из задачи Symfony - PullRequest
3 голосов
/ 04 июня 2010

Я написал набор отчетов и у меня есть специальный отчет, который создает файл CSV. Обслуживание этого файла через браузер по запросу не является проблемой, но мне нужно иметь возможность создавать этот CSV-файл каждую ночь и отправлять по электронной почте ссылку, чтобы иметь возможность его скачать.

По сути, мне нужно иметь возможность заменить определенное действие на задачу Symfony, запускаемую через cron. Итак, как мне получить контекст приложения / модуля из задачи Symfony? А во-вторых, как мне вызвать библиотеку SwiftMailer из задачи Symfony?

Я использую Symfony v1.4.4 и PHP v.5.2.13.

Ответы [ 2 ]

5 голосов
/ 08 июня 2010

В функции configure () вашей задачи вам нужно определить приложение, задействованное в вашей задаче:

$this->addOptions(array(
  new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name','frontend'),
  new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
  new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
));

И затем вы должны создать контекст в функции execute ():

sfContext::createInstance($this->configuration);

Наконец, вы можете легко позвонить в Swift:

$this->getMailer()->composeAndSend($sender,$dest, $subject, $mailBody);
0 голосов
/ 04 июня 2010

Предположим, у нас есть параметры задач CLI --application и --env, определенные в taskName::configure() метод

Тогда получение контекста приложения в методе taskName::execute() будет выглядеть так:

$context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($options['application'], $options['env']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...