« Zend Mail avec template » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 104 : | Ligne 104 : | ||
</pre> | </pre> | ||
[[Catégorie: Zend]] |
Dernière version du 18 juillet 2019 à 14:02
source: www.informatix.fr
fichier de configuration "configmail.ini"
resources.layout.layoutPath = "./application/layouts/" resources.view.layoutPath = "./application/modules/site/views/" mail.sujet.format = Marmits.com %s mail.data.from = "contact@marmits.com" mail.data.admin = "contact@marmits.com" mail.data.nom = "Développement web -> marmits" mail.data.adminsite = "http://site.com/admininistration"
Les templates pour Zend
- créer un layout (ex: mail.phtml) - créer une vue (ex: contact.phtml)
J'initialise ma classe dans le contôleur
$mail = new Mymail(Zend_Registry::get('configmail')); $mail->setSujet(" / N° ".$textNumCommande.", effectuée sur le site."); $mail->variable = $variable; ----- > vers la vue ou la layout $mail->rendreVue('contact.phtml'); $mail->addTo($mailadmin); if (!$mail->send()) { $erreur = "Echec lors de l'envoie du mail, veuillez réessayer plus tard."; }
Voici la classe modifiée de Zend Mail à ranger dans les "models"
<?php /** * Envoi d'e-mail avec un layout standard **/ class Mymail extends Zend_Mail { private $_config; private $_view; public function __construct($config, $charset = 'UTF-8') { if (!isset($config)) { throw new Zend_Exception('Pas de configuration fournie.') ; } $this->_config = $config; parent::__construct($charset); $this->setFrom($this->_config->mail->data->from, $this->_config->mail->data->nom); $this->_view = new Zend_View(); $this->_view->addScriptPath('./application/modules/site/views'); } /* Ceci servira pour remplir les attributs de la vue variable. ** Dans notre cas le contenu et l'émetteur. */ public function __set($key, $val) { if ('_' != substr($key, 0, 1)) { $this->_view->$key = $val; return; } } public function setSujet($sujet) { if (isset($this->_config->mail->sujet->format)) { /* Permet de spécifier un format pour le sujet */ $sujet = sprintf($this->_config->mail->sujet->format, $sujet); } return parent::setSubject($sujet); } /* Spécifie où trouver le layout mail.phtml ** ainsi que la vue variable (contact.phtml pour l'exemple). ** La vue est rendue dans le content du layout, ** qui est lui même rendu dans le corps du mail. */ public function rendreVue($script) { $layout = new Zend_Layout(Array('layoutPath' => $this->_config->resources->layout->layoutPath)); $layout->setLayout('mail'); $this->_view->setScriptPath($this->_config->resources->view->layoutPath.'scripts/mails'); $layout->content = $this->_view->render($script); $html = $layout->render(); $this->setBodyHtml($html); } } ?>