2010-06-04 68 views
3

我编写了一个报告套件,并且我有一个构建CSV文件的特定报告。通过浏览器按需提供此文件不是问题,但我需要能够每晚构建此CSV文件,并通过电子邮件发送链接以便能够下载它。从symfony任务中获取应用程序/模块上下文

本质上,我需要能够用symfony任务替换特定的动作,通过cron运行。那么如何从symfony任务中获得应用程序/模块上下文?其次,我将如何从symfony任务调用SwiftMailer库?

我使用symfony v1.4.4和PHP v.5.2.13。

回答

5

在任务的配置()函数,您需要定义涉及您的任务的应用程序:

$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); 

最后,你可以调用雨燕很容易:

$this->getMailer()->composeAndSend($sender,$dest, $subject, $mailBody); 
+0

伟大的东西,虽然我看到symfony抱怨发送标题,什么不是;这在CLI中显然不需要。似乎Fabien将框架放在一起时,并没有100%的预见。 – quickshiftin 2015-04-20 21:10:49

0

让我们假设我们在taskName::configure()方法定义--application--env CLI任务选项

然后接收taskName::execute()方法的应用程序上下文的样子:

$context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($options['application'], $options['env'])) 
+2

我收到了“PHP致命错误:不能重新声明类sfLogger在.../config_core_compile.yml.php“。 – chattsm 2010-06-04 14:36:14

相关问题