【问题标题】:Symfony 2 - UrlGenerator::doGenerate is called before listenerSymfony 2 - UrlGenerator::doGenerate 在侦听器之前调用
【发布时间】:2011-11-16 13:12:22
【问题描述】:

我想在上下文中添加一个参数,所以当登录被调用时,我可以在路由中使用它(类似于_locale)。 我可以在HttpUtils.php(如resetLocale)中添加这段代码,但我觉得它不是很干净。我需要它的原因是防火墙重定向到登录控制器,我希望在它的路由中有一个自定义参数。

我的问题是在调用UrlGenerator::doGenerate 之后调用了我的侦听器,所以我得到了MissingMandatoryParametersException。

这是我的config.yml相关代码:

services:
    mycompany.demobundle.listener.request:
        class: MyCompany\DemoBundle\RequestListener
        arguments: [@router, @security.context]
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

有什么想法???

【问题讨论】:

    标签: exception login symfony listener redirect


    【解决方案1】:

    您是否尝试过操纵priority 选项?

    tags:
       - { name: kernel.event_listener, event: kernel.request, priority: 0, method: onKernelRequest }
    

    【讨论】:

    • 刚刚做了,它没有帮助 - 仍然得到同样的异常。
    • 好的,priority: 100000 可以工作,我想它可能有较低的优先级,它仍然可以工作。我试图从我的侦听器和 UrlGenerator 打印一些调试消息,但发现很难理解。无论如何,现在它可以工作了,谢谢!
    • 其实我刚刚检查过......非常奇怪。当我给priority: 64 时,它工作正常。当我给它 63 时,它只是跳过登录面板并显示受保护的页面。没看懂……
    【解决方案2】:

    是的,你应该使用 priority 选项,它可以从 -255 到 255

    【讨论】:

      猜你喜欢
      • 2016-10-30
      • 2014-09-14
      • 1970-01-01
      • 2018-12-05
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2013-12-25
      相关资源
      最近更新 更多