原文地址http://symfony.com/doc/current/bundles/FOSUserBundle/controller_events.html
通过FOSUserBundle包装过的控制器提供了一些能够满足一般需要的功能. 不过你可能需要在你的应用中扩展这些功能, 并且加入你自己的业务逻辑.
出于此目的, 控制器在他们的逻辑中的多个地方触发了一些事件. 所有的事件都能在FOS\UserBundle\FOSUserEvents类中的常量找到.
所有的控制器都遵循一个约定: 他们会在表单验证之后保存用户数据之前触发一个SUCCESS事件, 并且在保存用户数据之后触发一个COMPLETED事件.因此你不想使用默认的重定向, 你可以在所有的SUCCESS事件之后你可以设置一个响应. 所有的COMPLETED事件允许你在控制器返回之前设置一个响应.
带表单的控制器在实体加载完毕之后通常会触发一个INITIALIZE事件, 而不是在表单创建之后.
例如,下面这个监听器会在重置密码之后跳转到homepage, 而不是profile页面:
1 | // src/Acme/UserBundle/EventListener/PasswordResettingListener.php |
然后你可以在配置中注册这个监听器:
1 | # src/Acme/UserBundle/Resources/config/services.yml |