Bonjour,
J'ai un souci pour surcharger le MailerInterface de FOSUserBundle
Voici ce que j'ai fait.
1- J'ai créer un fichier dans mon bundle qui hérite de FOS dans le repertore /Mailer (qui se nomme EmailListener.php).
2- La classe EmailListener hérite de l'interface MailerInterface qui se trouve dans me repertoire /Mailer
3- J'ai appeler mon service de messagerie dans le fichier de config.
4- J'ai indiqué a FOS d'utiliser mon systeme de messagerie
voici les contenus :
[EmailListener]
MailerInterface
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 <?php namespace MONBundle\Live\WlUserBundle\Listener; use Symfony\Component\Templating\EngineInterface; use Symfony\Component\DependencyInjection\Container; use MONBundle\WlUserBundle\Mailer\MailerInterface; use FOS\UserBundle\Model\UserInterface; class EmailListener implements MailerInterface { protected $mailer; protected $templating; protected $container; private $from = "no-reply@domaine.fr"; private $reply = "contact@domaine.fr"; private $name = "Equipe"; public function __construct($mailer, EngineInterface $templating, Container $container) { $this->mailer = $mailer; $this->templating = $templating; $this->container = $container; } protected function sendMessage($to, $subject, $body) { $mail = \Swift_Message::newInstance(); $mail ->setFrom($this->from,$this->name) ->setTo("deyfabien@free.fr") ->setSubject($subject) ->setBody($body) ->setReplyTo($this->reply,$this->name) ->setContentType('text/html'); $this->mailer->send($mail); } public function sendRefusMessage(){ die('ici_refus'); } public function sendContactFormMessage($infos){ die('ici contact'); } public function sendConfirmationEmailMessage(UserInterface $user { die('ici mail'); } protected function sendWithDefaultValue(){ $this->from = $this->container->getParameter('emailFrom'); $this->name = $this->container->getParameter('emailFromName'); $this->reply = $this->container->getParameter('emailReplyTo'); } public function sendResettingEmailMessage(UserInterface $user){ } } ?>
Fichier de Config
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 namespace MONBundle\WlUserBundle\Mailer; use FOS\UserBundle\Model\UserInterface; use FOS\UserBundle\Mailer\MailerInterface as ExtendMailInterface; /** * */ interface MailerInterface extends ExtendMailInterface { /** * Send an email to a user to confirm the account creation * * @param UserInterface $user */ function sendConfirmationEmailMessage(UserInterface $user); /** * Send an email to a user to confirm the password reset * * @param UserInterface $user */ function sendResettingEmailMessage(UserInterface $user); public function sendRefusMessage(); public function sendContactFormMessage($infos); }
Et malgrés tout ça...j'ai l'impression qu'il ne rentre jamais dans ma surchage
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 fos_user: db_driver: orm # Le type de BDD à utiliser, nous utilisons l'ORM Doctrine depuis le début firewall_name: main # Le nom du firewall duquel on utilisera ces utilisateurs user_class: MONBUNDLE\WlUserBundle\Entity\Customer # La classe de l'entité User que nous venons de définir registration: form: type: wlbundle_customertype handler: wluserbundle.form.handler.registration confirmation: enabled: false service: mailer: keep.mailer #DANS SERVICE services: keep.mailer: class: MONBundle\WlUserBundle\Listener\EmailListener arguments: [@mailer, @templating, @service_container]
Est ce que quelqu'un aurait une idée ? ou pourrait m'aider un peu svp ?
Merci d'avance
Decad7
Partager