2009-05-28 9 views
1

J'essaye d'envoyer du courrier en utilisant des modèles de courrier. Pour ce faire, je veux charger un .tpl dans une variable. Au lieu de charger un fichier HTML et de substituer des espaces réservés, je me demande s'il est possible de définir des valeurs de la vue dans le contrôleur, puis de charger cette vue dans une variable. De cette façon, je voudrais avoir une variable contenant le courrier HTML rempli avec l'information définie dans le contrôleur avant de charger la vue.Chargement du fichier de vue dans une variable dans Zend Framework

Toutes les alternatives sont également les bienvenues, je veux dire, s'il y a déjà des façons de faire des modèles de courrier d'une manière plus standardisée.

Répondre

8

Une bonne idée Erik, et je l'ai fait plusieurs fois.

Zend_View est vraiment juste un système de templates, et peut être utilisé pour générer n'importe quoi, pas seulement HTML. Exemple de code - créez une vue, attribuez des données, affichez la vue et envoyez le courrier!

$view = $this->getHelper('ViewRenderer')->view; 

$view->email = $data['email'];  
$view->password = $data['password']; 

$text = $view->render('mail/new-user.php'); 
$mail = new Zend_Mail(); 

$mail->addTo($data['email'], $data['forename'] . ' ' . $data['lastname']); 
$mail->setSubject('Account Details'); 
$mail->setBodyText($text, 'utf-8'); 

$mail->send(); 

Dans la première ligne, je récupère l'affichage de ViewRenderer afin que j'aie accès aux chemins de script normaux. Vous pouvez créer un nouvel objet Zend_View, mais vous devrez ajouter le chemin d'accès à vos scripts de vue manuellement. Dans mon exemple, le contenu textuel est généré, mais vous pouvez générer du code HTML tout de même.

Questions connexes