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

Symfony PHP Discussion :

Envoyer un mail depuis une classe modèle


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Par défaut Envoyer un mail depuis une classe modèle
    bien le bonjour,

    Je souhaite envoyer un mail depuis une classe modèle.
    J'ai rajouter une variable static a mon mailer pour y avoir access depuis la couche model.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = ProjectConfiguration::getMailer()->compose();
    J'obtient une erreur
    Unknown record property / related component "partial" on "Commande"
    lors de l'ajout des partials du body

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $options = array(
         subject' => sfContext::getInstance()->getI18N()->__("[%nomsite%] Notification de commande d une de vos créations", array('%nomsite%' => sfConfig::get('app_nom_site'))),
         'fullname' => $artisan->getProfile()->getFullName(),
         'email' => $artisan->getProfile()->getUser()->getEmailAddress(),
         'parameters' => array(
              'nom_artisan' => $artisan->getProfile()->getFullName(),
              'num_commande' => $this->getId(),
              'nom_site' => sfConfig::get('app_nom_site'),
              'url_site' => sfConfig::get('app_url_site'),
              'date' => $this->getCreatedAt(),
              'basketItem' => $basketItem),
         'text' => 'commande/sendConfirmationCommandeArtisanText',
         'html' => 'commande/sendConfirmationCommandeArtisanHtml');
     
         $message = ProjectConfiguration::getMailer()->compose();
         $message->setSubject($options['subject']);
         $message->setBody($this->getPartial($options['html'], $options['parameters']), 'text/html');
         $message->addPart($this->getPartial($options['text'], $options['parameters']), 'text/plain');
     
         $address = ArtisanArt::getFromAddress();
         $message->setFrom(array($address['email'] => $address['fullname']));
         $message->setTo($artisan->getProfile()->getUser()->getEmailAddress());
     
         ProjectConfiguration::getMailer()->send($message);

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je ne pourrais pas te répondre vu que je ne connais pas Symphony.

    En revanche je m'interroge sur la pertinence d'envoyer des emails depuis la couche modèle. C'est normalement la responsabilité de la couche métier.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Désolé je ne réponds pas au problème du créateur du topic, mais à titre informatif, qu'est ce que la différence entre la couche modèle et la couche métier?

    Perso je fais toutes mes requêtes en base dans les modèles généras par doctrine, et je mets la logique dans des modèles créés par moi même, que je mets dans l'autoload (dans le dossier lib/models), on peut appeler ça la couche métier ?

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Du coup non, ta couche métier est fusionnée avec ton modèle, ce qui n'est pas forcément faux dans la logique MVC. Généralement; un architecture multi-tiers classique est composée d'une couche modèle, d'une couche métier et d'une couche de présentation. Voir http://fr.wikipedia.org/wiki/Architecture_trois_tiers

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    ok, merci de ta précision

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    J'avais trouvé ça je ne sais plus où sur le net, mais j'utilise ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    /**
     * Returns the project mailer
     */
    static public function getMailer()
    {
        if (null !== self::$mailer)
        {
            return self::$mailer;
        }
     
        // If sfContext has instance, returns the classic mailer resource
        if (sfContext::hasInstance() && sfContext::getInstance()->getMailer())
        {
            self::$mailer = sfContext::getInstance()->getMailer();
        } 
        else
        {
            // Else, initialization
            if (!self::hasActive())
            {
                throw new sfException('No sfApplicationConfiguration loaded');
            }
            require_once sfConfig::get('sf_symfony_lib_dir') . '/vendor/swiftmailer/classes/Swift.php';
            Swift::registerAutoload();
            sfMailer::initialize();
            $applicationConfiguration = self::getActive();
     
            $config = sfFactoryConfigHandler::getConfiguration($applicationConfiguration->getConfigPaths('config/factories.yml'));
     
            self::$mailer = new $config['mailer']['class']($applicationConfiguration->getEventDispatcher(), $config['mailer']['param']);
        }
     
        return self::$mailer;
    }

    Du coup pour appeler ton mailer depuis ton modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mailer = ProjectConfiguration::getMailer();

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2009, 09h57
  2. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  3. Réponses: 14
    Dernier message: 15/12/2005, 18h46
  4. Envoyer un mail depuis une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2005, 11h51
  5. Référence à un objet existant depuis une classe
    Par Adrenalys dans le forum ASP
    Réponses: 2
    Dernier message: 21/07/2005, 00h44

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