« Zend Mail avec template » : différence entre les versions
Apparence
Page créée avec « rce: www.informatix.fr 1 - fichier de configuration "configmail.ini" resources.layout.layoutPath = "./application/layouts/" resources.view.layoutPath = "./application/modu... » |
Aucun résumé des modifications |
||
| (4 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
source: [http://www.informatix.fr www.informatix.fr] | |||
== fichier de configuration "configmail.ini" == | |||
<pre> | |||
resources.layout.layoutPath = "./application/layouts/" | resources.layout.layoutPath = "./application/layouts/" | ||
resources.view.layoutPath = "./application/modules/site/views/" | resources.view.layoutPath = "./application/modules/site/views/" | ||
| Ligne 8 : | Ligne 10 : | ||
mail.data.nom = "Développement web -> marmits" | mail.data.nom = "Développement web -> marmits" | ||
mail.data.adminsite = "http://site.com/admininistration" | mail.data.adminsite = "http://site.com/admininistration" | ||
</pre> | |||
== Les templates pour Zend == | |||
- créer un layout (ex: mail.phtml) | - créer un layout (ex: mail.phtml) | ||
- créer une vue (ex: contact.phtml) | - créer une vue (ex: contact.phtml) | ||
== J'initialise ma classe dans le contôleur == | |||
<pre> | |||
$mail = new Mymail(Zend_Registry::get('configmail')); | $mail = new Mymail(Zend_Registry::get('configmail')); | ||
| Ligne 26 : | Ligne 31 : | ||
$erreur = "Echec lors de l'envoie du mail, veuillez réessayer plus tard."; | $erreur = "Echec lors de l'envoie du mail, veuillez réessayer plus tard."; | ||
} | } | ||
</pre> | |||
== Voici la classe modifiée de Zend Mail à ranger dans les "models" == | |||
<pre> | |||
<?php | <?php | ||
/** | /** | ||
| Ligne 94 : | Ligne 101 : | ||
} | } | ||
?> | |||
</pre> | |||
[[Catégorie: Zend]] | |||
Dernière version du 18 juillet 2019 à 15: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);
}
}
?>