[FOSUserBundle] Mailer Interface
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]
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 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){
}
}
?> |
MailerInterface
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
|
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);
} |
Fichier de Config
Code:
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] |
Et malgrés tout ça...j'ai l'impression qu'il ne rentre jamais dans ma surchage :(
Est ce que quelqu'un aurait une idée ? ou pourrait m'aider un peu svp ?
Merci d'avance
Decad7