2010-06-04 44 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

相關問題