加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Symfony2:在页面加载事件侦听器中获取路由

发布时间:2020-12-13 14:07:32 所属栏目:PHP教程 来源:网络整理
导读:如何在页面加载甚至监听器中获取路由? 我在services.yml中有以下代码: page_load_listener: class: AcmeMainBundleEventListenerPageLoadListener arguments: [@security.context,@session] tags: - { name: kernel.event_listener,event: kernel.contr
如何在页面加载甚至监听器中获取路由?

我在services.yml中有以下代码:

page_load_listener:
    class: AcmeMainBundleEventListenerPageLoadListener
    arguments: [@security.context,@session]
    tags:
        - { name: kernel.event_listener,event: kernel.controller,method: onKernelController,priority: 64 }

在PageLoadListener类中,我有相应的方法:

public function onKernelController(FilterControllerEvent $event)
    {

        // Some code I need to execute that needs the route arguments

    }

问题似乎是路由和参数不可用.我失踪了什么

我需要通过哪个事件来接收路由,这是参数?

谢谢,

JB

所有内核事件都会扩展为 KernelEvent,这意味着您可以通过$event-> getRequest()简单地访问Request对象.
public function onKernelController(FilterControllerEvent $event)
{
    $request = $event->getRequest();

    // Matched route
    $_route  = $request->attributes->get('_route');

    // Matched controller
    $_controller = $request->attributes->get('_controller');

    // All route parameters including the `_controller`
    $params      = $request->attributes->get('_route_params');
}

如果你想获得普通的路由属性,只需过滤所有以“_”为前缀的元素.

选择正确的事件来监听取决于具体的用例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读