IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

view helper dans un modèle (pour l'envois d'un mail)


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut view helper dans un modèle (pour l'envois d'un mail)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->setBodyHtml('$this->view->url(array('questionId'=>32, 'userId'=>23),'social-showquestionsent')')
    J'ai aussi essayé de créer une instance de la vue, sans succès:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $view = new Zend_View_Interface;
    Il y a t-il une "technique" pour appeler les helpers de vues dans un modèle?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    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

    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut
    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?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut
    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.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/07/2014, 15h14
  2. Comment faire pour un envoi automatique de mail dans access
    Par chpierrot dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/06/2008, 13h45
  3. [Mail] Problème pour l'envoi de e-mail
    Par KriSs66 dans le forum Langage
    Réponses: 3
    Dernier message: 31/12/2006, 12h46
  4. [Mail] Besoin d'un conseil pour l'envoi d'e-mail
    Par olive_le_malin dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2006, 11h39
  5. Code pour l'envoi d'un mail
    Par Z[ee]k dans le forum Access
    Réponses: 19
    Dernier message: 20/06/2006, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo