事件的定義在 FOS\UserBundle\FOSUserEvents裏面
跟註冊有關的是:php
const REGISTRATION_INITIALIZE = 'fos_user.registration.initialize'; const REGISTRATION_SUCCESS = 'fos_user.registration.success'; const REGISTRATION_COMPLETED = 'fos_user.registration.completed'; const REGISTRATION_CONFIRM = 'fos_user.registration.confirm'; const REGISTRATION_CONFIRMED = 'fos_user.registration.confirmed';
選取FOS\UserBundle\FOSUserEvents::REGISTRATION_SUCCESS這個事件來發送郵件this
<?php namespace Mot\UserBundle\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class RegistrationSuccessListener implements EventSubscriberInterface { private $request; private $doctrine; public function __construct( \Symfony\Component\HttpFoundation\RequestStack $request , $sender , $template ) { $this->request = $request ; $this->doctrine = $doctrine; } public static function getSubscribedEvents() { return array( \FOS\UserBundle\FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess' ); } public function onRegistrationSuccess($event) { $name = $event->getForm()->getData()->getName(); $email = $event->getForm()->getData()->getEmail(); $this->sender->send( $email , $name , $this->template->welcome() ); } }
$sender是本身寫的一個發送service $template是生成郵件模板的servicespa
而後再service中加入code
mot_user.registration_success: class: Mot\User\EventListener\RegistrationSuccessListener arguments: [@request_stack , @my_sender , @my_template] tags: - { name: kernel.event_subscriber }
ok done 在註冊form submit成功以後 會發送歡迎郵件到用戶那邊orm