Php 如何在Symfony 3.4中查找当前路线模式?

Php 如何在Symfony 3.4中查找当前路线模式?,php,symfony,symfony-3.4,Php,Symfony,Symfony 3.4,就像在security.yml-{path:^/login,role:IS_AUTHENTICATED\u ANONYMOUSLY}中一样,当路由模式与/admin不同时,我想在eventListener中执行代码。如果您正在侦听Symfony内核事件,则可以通过调用getRequest()从事件中检索当前请求关于该事件。您可能需要检查它是否是当前请求,也就是说,您没有处理子请求,但我将在这里省略此项 一旦有了请求,检查路由是否与模式匹配或未被模式捕获就像执行preg_match()一样简单,或

就像在security.yml
-{path:^/login,role:IS_AUTHENTICATED\u ANONYMOUSLY}
中一样,当路由模式与
/admin

不同时,我想在eventListener中执行代码。如果您正在侦听Symfony内核事件,则可以通过调用
getRequest()从事件中检索当前请求
关于该事件。您可能需要检查它是否是当前请求,也就是说,您没有处理子请求,但我将在这里省略此项

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

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

// Do your thing
当您的路由以
/admin/
开头时,这将跳过该事件,如果它与此管理模式不匹配,则执行您放置的任何内容而不是注释

如果要检查某个路由名称是否匹配,还可以从请求中获取
\u route
属性:

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

然后,您可以检查路由器以获取有关该路由的其他信息,处理路由名称,例如,通过检查某个前缀,然后执行您想要执行的任何操作。

请向我们显示一些代码以及失败的位置。如果没有更多的细节,我想我们无法帮助你。没有失败,我只是想知道如何获得路线的当前模式。例如:Il(当前路由模式!=“^/admin”){//execute code}