2010-06-04 4 views
3

J'ai créé une suite de rapports et j'ai un rapport spécifique qui construit un fichier CSV. Servir ce fichier via un navigateur à la demande n'est pas un problème, mais je dois être capable de créer ce fichier CSV tous les soirs, et d'envoyer un e-mail autour d'un lien pour pouvoir le télécharger. Essentiellement, j'ai besoin de pouvoir remplacer une action spécifique par une tâche symfony, lancée via cron. Alors, comment gagner du contexte application/module à partir d'une tâche symfony? Et deuxièmement, comment j'appellerais la bibliothèque SwiftMailer à partir d'une tâche symfony? J'utilise symfony v1.4.4 et PHP v.2.2.13.Récupérer un contexte application/module à partir d'une tâche symfony

Répondre

5

Dans la fonction configure() de votre tâche , vous devez définir l'application impliquée dans votre tâche:

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

Et alors vous devez créer le contexte dans l'exécution() fonction:

sfContext::createInstance($this->configuration); 

Enfin, vous pouvez appeler Swift très facilement:

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

De bonnes choses, bien que je vois symfony se plaindre d'envoyer des en-têtes et quoi d'autre; ce qui n'est évidemment pas nécessaire sur la CLI. Il semble qu'il n'y avait pas 100% de prévoyance pour cela quand Fabien a mis le cadre ensemble. – quickshiftin

0

Supposons que nous nous avons --application et --env options de tâche CLI définie dans taskName::configure() méthode

contexte d'application recevant ensuite dans taskName::execute() méthode ressemblera:

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

je reçois un « PHP Erreur fatale: Impossible redéclarer classe sfLogger dans .../config_core_compile.yml.php 'en essayant ça. – chattsm

Questions connexes