2010-08-23 14 views
4

J'ai la configuration suivante définie dans mon fichier factories.yml ...Symfony 1.4.6 configuration de chargement factories.yml de tâche

all: 
    mailer: 
    param: 
     transport: 
     class: Swift_SendmailTransport 
     param: 
      command: /usr/sbin/sendmail -oi -t 

... remédier à la question 'double point' comme décrit here .

Quand je lance le code suivant ...

$mailer = $this->getMailer(); 
$message = $mailer->compose(); 

$message->setTo('[email protected]'); 
$message->setFrom('[email protected]'); 
$message->setSubject('Testing'); 
$message->setBody(
    $mailer->getRealtimeTransport()->getCommand(), 
    'text/plain' 
); 

$mailer->send($message); 

... à l'intérieur d'un tout d'action fonctionne comme prévu. Mais lorsque j'exécute le même code à l'intérieur d'une tâche, j'obtiens une erreur fatale - PHP Fatal error: Call to undefined method getCommand - parce que SwiftMailer utilise la classe de transport par défaut et non la classe Swift_SendmailTransport comme spécifié dans la configuration factories.yml.

Des idées pour lesquelles la configuration factories.yml n'est pas chargée dans une tâche symfony, et comment puis-je résoudre ce problème?

Répondre

6

Votre tâche ne connaît pas le nom de l'application factories.yml à charger, même si vous n'avez qu'une seule application. Vous devez passer un paramètre d'application comme ceci:

php symfony namespace:task --application=frontend 

Pour avoir une application par défaut dans votre tâche, mettez à jour votre configuration comme ceci:

protected function configure() 
{ 
    $this->addOptions(array(
    new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'frontend'), 
)); 
} 
+0

Magnifique, merci de bien vouloir! – chattsm