Symfony - inclure partial dans une tâche

Invité
Invité n'ayant pas de compte PHPfrance

03 mai 2010, 15:26

Bonjour à tous ,

je suis actuellement en train de réaliser une tâche sur mon site. Celle-ci doit envoyer des mails toutes les nuits à un certain nombre d'utilisateur.
Dans la génération des mails, je souhaite inclure un template (comme je l'ai fait sur le reste du site), or je n'y arrive pas dans la tâche.

Voici le code :
$message = $this->getMailer()->compose("[email protected]",$compte->getCompteCourriel(),"Alertes","ceci est une alerte");
$message->setBody($this->getPartial('MailAlerteHtml', $tabAnciens), 'text/html');

Je lance ma tâche en lui précisant l'application pour récupérer le contexte, mais il m'affiche une erreur sur le getPartial().

Quelqu'un a t'il une idée pour régler / contourner ce problème ?

Merci d'avance pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mai 2010, 15:31

Avec l'erreur, on pourrait surement mieux t'aider ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

03 mai 2010, 15:37

effectivement :)


"call to undefined method envoiAlertesTask::getPartial()"

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mai 2010, 16:37

la méthode getPartial() est une méthode de la classe sfAction.
Toi, tu es dans une task, donc dans la classe sfTask, qui n'hérite pas de sfAction. C'est donc normal que ça ne marche pas.

Toutefois, cette méthode n'est qu'un raccourci vers le helper get_partial(), qui devrait beaucoup t'intéresser ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

03 mai 2010, 17:00

Merci beaucoup (3 heures que je ramais ....) !!


si cela intéresse quelqu'un , voici le code que j'ai utilisé :

$context = sfContext::createInstance($this->configuration);
$this->configuration->loadHelpers('Partial');
...
$message->setBody(get_partial('ajax/mailEnvoiAlerteHtml', array('tabAnciens'=>$tabAnciens)));