发布于 2015-01-09 06:55:57 | 806 次阅读 | 评论: 0 | 来源: PHPERZ
这里有新鲜出炉的Symfony 中文指南,程序狗速度看过来!
Symfony开源的PHP开发框架
Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。
本文向大家介绍的是Symfony如何 实现注册成功后给用户发送邮件的功能示例及代码,感兴趣的同学参考下.
事件的定义在 FOS\UserBundle\FOSUserEvents里面
跟注册有关的是:
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这个事件来发送邮件
<?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是生成邮件模板的service
然后再service中加入
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成功之后 会发送欢迎邮件到用户那边