|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 110 ![]() |
Bonjour,
J'envoie un mail à partir d'un modèle. Lorsque je définis le contenu du mail, j'aimerais utiliser des aides de vues. (ce que j'aurais pu faire dans le controller avec $this->view ou dans la vue sur $this). Voilà le code (qui marche dans le controller mais pas dans le modèle) Code :
$mail->setBodyHtml('$this->view->url(array('questionId'=>32, 'userId'=>23),'social-showquestionsent')') Il y a t-il une "technique" pour appeler les helpers de vues dans un modèle? |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Patrick Barroca Inscription : mai 2008 Messages : 178 ![]() |
Hello,
Je réagis à ta question car la réponse est déjà dedans Comment fait-on pour utiliser une aide de vue dans un model ? Hé bien on ne fait pas, sinon ça s'appelerait des aide de model Plus sérieusement, ce que tu essayes de faire est une erreur courante, si dans le modèle Zend MVC, la vue est une propriété du controller ce n'est pas par hasard. Le model ne doit pas se préoccuper de la mise en forme, c'est le soucis de la vue. Le model ne doit pas se préoccuper d'envoyer ou pas un mail, c'est le soucis du controller. En gros, reviens à l'architecture MVC*normale, un controller demande des infos au model et fait un rendu de vue avec ces infos, il utilise ensuite ce rendu comme corps d'un mail. Tu vas voir que comme ça tout sera plus simple d'un coup @+ |
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 110 ![]() |
Merci pour ta réponse.
Tu as raison je devrais définir une vue pour chaque email envoyé par l'application (même quand ils sont très simple comme dans mon cas). Par contre, au niveau MVC, çà ne pose pas de problème d'envoyer des mails à partir des modèles? |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Patrick Barroca Inscription : mai 2008 Messages : 178 ![]() |
Hello,
Bien entendu que c'est un blem d'envoyer un mail à partir d'un model. Tu devrais avoir une action dans un controller qui correspond à ce que tu essayes de faire. Cette action instancie le model et passe des données à une vue, en fait le rendu et effectue l'envoi du mail. Enfin c'est comme ça que je vois les choses pour de l'envoi de Mail en MVC |
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 110 ![]() |
Même lorsqu'il d'un process?
1) Je demande à un modèle de créer un objet (fonction déclenchée à partir de mon controller). 2) La fonction new() du modèle déclenche tous les process associés à la création de l'objet. Un de ces process est l'envoie d'un mail. Dans ce cas là, je trouvais que l'envoie du mail avait sa place dans le modèle. Je le code une seule fois et je suis sur qu'à chaque fois que la fonction est appelée, l'email est envoyé. Car si j'ai bien compris le MVC, le controller ne sert que d'interphase entre les appel http et l'application. Les règles "business" tel que "à chaque fois que tel objet est créer, je dois envoyer un mail" doivent être dans le controller. Jusqu'à maintenant je passais par le controller mais j'ai l'impression que c'est plus clean via le modèle. |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Patrick Barroca Inscription : mai 2008 Messages : 178 ![]() |
cool, tu nous confies le pourquoi tu envoies un mail à partir de ton model
Pour moi il ne s'agit pas d'une règle qui impacte la création de ton objet mais qui intervient bien à l'appel d'une action de l'utilisateur. On peut tout à fait imaginer que l'envoi de mail soit optionnel, par exemple si tu fais des instanciations par lot ou pour l'écriture des tests, etc... Bref, j'imagine plein de contextes pour lesquels finalement l'envoi de mail n'est pas toujours lié à l'instanciation. Donc, pour toi il s'agit de trouver un moyen de t'assurer que lorsqu'on crée un objet par une certaine action dans un certain controller, le mail est envoyé au(x) destinataire(s) prévu(s). Si c'est un comportement récurrent de créations de plusieurs objets, un action helper pourrait centraliser la création et l'envoi du mail. Un controller de base dont les controllers créant des objets avec notification mail héritent te permettrait de centraliser l'appel au helper de notification. Bref, les moyens d'organiser les choses ne manquent pas, héritage, composition et helpers sont là pour éviter la duplication et s'assurer des "comportements" communs de ton appli. En tous cas, je ne vois pas en quoi du code d'envoi de mail est plus «clean» dans un model. Je veux dire par là que ton objet s'occupe déjà de son taff «business», je pense pas que tu veuilles en plus qu'il se préoccupe d'envoyer des mails. |
|
10
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 110 ![]() |
Tu m'as convaincu et remis dans le droit chemin !
Merci ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com