我編寫了一個報告套件,並且我有一個構建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