【问题标题】:Symfony2: Pass _route To Event Listener ServiceSymfony2:将 _route 传递给事件侦听器服务
【发布时间】:2012-07-12 00:00:41
【问题描述】:

我需要将容器中的“_route”以及路由属性传递给事件监听器。换句话说,我需要侦听器服务能够感知容器,而无需通过将整个 service_container 传递到事件侦听器类的开销。

我见过类似这样的代码示例:

services: 
    root.path.locator: 
        class: Acme\Bundle\HelloBundle\Util\RootLocator 
        arguments: ['%kernel.root_dir%'] 

在控制器中,我会使用类似下面的代码来获取“_route”:

$request = $this->container->get('request');
$routeName = $request->get('_route');

但是,在事件侦听器中,我没有可用的。

我怎样才能做到以上几点?

谢谢,

JB

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    在服务 xml 标记上将 scope 设置为 request。这将自动注入 Request 对象,然后将 @request 设置为参数。在yaml中,设置scope: requestarguments: [@request]

    【讨论】:

    • 有趣。在传入 Request 对象时,看起来 Request 参数数组是空的,其中应该包含 _route 参数。我忽略了什么吗?
    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多