Symfony EventListener實現註冊成功後給用戶發送郵件 (fosuserbundle)

事件的定義在 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

相關文章
相關標籤/搜索