如何在Symfony 3.4中找到当前的路由模式?

时间:2018-05-01 07:25:22

标签: php symfony symfony-3.4

与security.yml - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }类似,我想在eventListener中执行代码,而路由模式不同于/admin

1 个答案:

答案 0 :(得分:0)

如果您正在收听Symfony内核事件,则可以通过在事件上调用getRequest()来检索事件中的当前请求。您可能必须检查它是否是当前请求,即您没有处理子请求,但我将在此处省略。

一旦你有请求检查路由是否匹配模式或模式没有捕获模式就像执行preg_match()一样简单,或者在更简单的情况下只需要像这样的字符串比较:

if (strpos($request->getPathInfo(), '/admin/') === 0) {
    return
}

// Do your thing

当您的路线以/admin/开头时,如果匹配此管理模式,则会执行您放置的任何内容而不是评论。

如果您想检查某个路线名称是否匹配,您还可以从请求中获取_route属性:

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

然后,您可以检查路由器以获取该路线的其他信息,处理路线名称,例如通过检查某个前缀并做任何你想做的事情。