与security.yml - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
类似,我想在eventListener中执行代码,而路由模式不同于/admin
答案 0 :(得分:0)
如果您正在收听Symfony内核事件,则可以通过在事件上调用getRequest()
来检索事件中的当前请求。您可能必须检查它是否是当前请求,即您没有处理子请求,但我将在此处省略。
一旦你有请求检查路由是否匹配模式或模式没有捕获模式就像执行preg_match()
一样简单,或者在更简单的情况下只需要像这样的字符串比较:
if (strpos($request->getPathInfo(), '/admin/') === 0) {
return
}
// Do your thing
当您的路线以/admin/
开头时,如果不匹配此管理模式,则会执行您放置的任何内容而不是评论。
如果您想检查某个路线名称是否匹配,您还可以从请求中获取_route
属性:
$routeName = $request->attributes->get('_route');
然后,您可以检查路由器以获取该路线的其他信息,处理路线名称,例如通过检查某个前缀并做任何你想做的事情。