我编写了一个报告套件,并且我有一个构建CSV文件的特定报告。通过浏览器按需提供此文件不是问题,但我需要能够每晚构建此CSV文件,并通过电子邮件发送链接以便能够下载它。从symfony任务中获取应用程序/模块上下文
本质上,我需要能够用symfony任务替换特定的动作,通过cron运行。那么如何从symfony任务中获得应用程序/模块上下文?其次,我将如何从symfony任务调用SwiftMailer库?
我使用symfony v1.4.4和PHP v.5.2.13。
我编写了一个报告套件,并且我有一个构建CSV文件的特定报告。通过浏览器按需提供此文件不是问题,但我需要能够每晚构建此CSV文件,并通过电子邮件发送链接以便能够下载它。从symfony任务中获取应用程序/模块上下文
本质上,我需要能够用symfony任务替换特定的动作,通过cron运行。那么如何从symfony任务中获得应用程序/模块上下文?其次,我将如何从symfony任务调用SwiftMailer库?
我使用symfony v1.4.4和PHP v.5.2.13。
在任务的配置()函数,您需要定义涉及您的任务的应用程序:
$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);
让我们假设我们在taskName::configure()
方法定义--application
和--env
CLI任务选项
然后接收taskName::execute()
方法的应用程序上下文的样子:
$context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($options['application'], $options['env']))
我收到了“PHP致命错误:不能重新声明类sfLogger在.../config_core_compile.yml.php“。 – chattsm 2010-06-04 14:36:14
伟大的东西,虽然我看到symfony抱怨发送标题,什么不是;这在CLI中显然不需要。似乎Fabien将框架放在一起时,并没有100%的预见。 – quickshiftin 2015-04-20 21:10:49