Zend Mail avec template

De Marmits Wiki
Révision datée du 18 juillet 2019 à 15:54 par Geo (discussion | contributions) (Page créée avec « rce: www.informatix.fr 1 - fichier de configuration "configmail.ini" resources.layout.layoutPath = "./application/layouts/" resources.view.layoutPath = "./application/modu... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

rce: www.informatix.fr 1 - 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"

2 - Les templates pour Zend

- créer un layout (ex: mail.phtml) - créer une vue (ex: contact.phtml)

3 - 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."; }


4 - 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);
   }

}

?>