Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/10/2011, 15h33   #1
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
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 :
$message = ProjectConfiguration::getMailer()->compose();
J'obtient une erreur
Citation:
Unknown record property / related component "partial" on "Commande"
lors de l'ajout des partials du body

Code :
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);
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 18h32   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 14h34   #3
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 62
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 62
Points : 37
Points : 37
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 ?
zoreol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 20h41   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
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
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 10h02   #5
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 62
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 62
Points : 37
Points : 37
ok, merci de ta précision
zoreol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 10h16   #6
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2008
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 19
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 16
Points : 14
Points : 14
J'avais trouvé ça je ne sais plus où sur le net, mais j'utilise ça :

Code :
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 :
$mailer = ProjectConfiguration::getMailer();
Leward est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h44.


 
 
 
 
Partenaires

Hébergement Web