如何覆盖FOSUserBundle的EmailConfirmationListener

戈特利布·诺施纳贝尔

我激活了FOSUserBundle的用户确认。但是我不想从原始的听众那里得到回应

$url = $this->router->generate('fos_user_registration_check_email');
$event->setResponse(new RedirectResponse($url));

我想选择另一条路线。我试图扩展EventListener

namespace Acme\MyBundle\EventListener;

use FOS\UserBundle\EventListener\EmailConfirmationListener as BaseListener;
// ...

class EmailConfirmationListener extends BaseListener
{
    public function onRegistrationSuccess(FormEvent $event)
    {    
        $url = $this->router->generate('fos_user_registration_check_email');
        $event->setResponse(new RedirectResponse($url));
    }
}

不幸的是,EventListeners似乎不像Controller或Forms那样可扩展。(以防万一,您可能会想:我的捆绑包当然是FOSUserBundle的子级。)

因此,我想避免直接在供应商文件夹中编辑这两行(因为这样做是非常不好的做法!)。那么,我有什么办法摆脱这种灾难呢?

尼古拉·梅里

只需fos_user.listener.email_confirmation通过在您的config.yml站点中创建具有相同名称的服务覆盖该服务即可

# app/config/config.yml

services:
    fos_user.listener.email_confirmation:
        class:        "Acme\MyBundle\EventListener\EmailConfirmationListener"
        arguments:    ["@fos_user.mailer", "@fos_user.util.token_generator", "@router", "@session"]
        tags:
            - { name: kernel.event_subscriber }

...甚至更清洁-创建服务正在使用的参数:

parameters:
    my.funky_parameter.class: "Acme\MyBundle\EventListener\EmailConfirmationListener"

services:
    fos_user.listener.email_confirmation:
        class: "%my.funky_parameter.class%"
        # ...

...或捆绑包扩展名加载的捆绑包的xml / yml / php配置文件中。AppKernel.php选择这种方式时,请确保在FOSUserBundle之后注册了您的捆绑软件

...或最佳方法:

根据文档章节如何覆盖捆绑包的任何部分中的建议,在编译器传递中更改原始服务的类名

在选择此选项之前,也许可以深入研究如何使用编译器通行证一章

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

覆盖FOSUserBundle

来自分类Dev

symfony2如何用FosuserBundle覆盖User类?

来自分类Dev

fosuserbundle覆盖登录操作

来自分类Dev

覆盖FOSUserBundle登录表单

来自分类Dev

覆盖FOSUserBundle登录表单

来自分类Dev

覆盖验证消息FOSUserBundle

来自分类Dev

FOSUserBundle覆盖模板

来自分类Dev

FOSUserBundle 覆盖登录逻辑

来自分类Dev

Symfony 2和覆盖FOSUserBundle

来自分类Dev

覆盖FOSUserBundle注册表格

来自分类Dev

如何在其他捆绑软件中覆盖FOSUserBundle的架构文件

来自分类Dev

覆盖FOSUserBundle路由Symfony2

来自分类Dev

FOSUserBundle覆盖默认格式并获取InvalidArgumentException

来自分类Dev

FOSUserBundle覆盖控制器的操作

来自分类Dev

无法覆盖FOSUserBundle ProfileFormType buildForm()函数

来自分类Dev

无法覆盖 FOSUserBundle 默认注册表单

来自分类Dev

如何使用 FOSUSERBUNDLE 和 MEMCACHED?

来自分类Dev

FOSUserBundle覆盖不一致性

来自分类Dev

使用fosuserbundle覆盖更改密码表单

来自分类Dev

FOSUserBundle的控制器覆盖中不存在的服务

来自分类Dev

Symfony2和FOSUserBundle:覆盖邮件程序

来自分类Dev

尝试覆盖FOSUserBundle中的模板,但没有效果

来自分类Dev

Symfony2和FOSUserBundle:覆盖邮件程序

来自分类Dev

Symfony3.4 中的 fosuserbundle 覆盖控制器

来自分类Dev

FOSOAuthServerBundle和FOSUserBundle-如何使其工作?

来自分类Dev

FosUserBundle如何修复重定向循环

来自分类Dev

如何让所有用户使用FosUserBundle?

来自分类Dev

FOSUserBundle-密码盐如何应用?

来自分类Dev

FOSUserBundle-密码盐如何应用?