Symfony2:如何获取路由前缀


Symfony2: How to get the route prefix

我想做的是,我有一个管理面板,我可以用"admin"前缀访问它,但只有先转到配置页面才能访问它。

为此,我创建了一个Listener事件,如下所示:

<?php
namespace Config'ConfigBundle'Listener;
use Symfony'Component'DependencyInjection'ContainerInterface;
use Symfony'Component'HttpFoundation'RedirectResponse;
use Symfony'Component'HttpKernel'Event'GetResponseEvent;
class ConfigListener {
public function __construct(ContainerInterface $container){
    $this->router = $container->get('router');
    $this->em = $container->get('doctrine')->getEntityManager();;
}
public function onKernelRequest(GetResponseEvent $event)
{
    $route = $event->getRequest()->attributes->get('_route');
    if ( $route == 'admin') {
        $config = $this->em->getRepository('ConfigBundle:Config')->findConfig();
        if($config == null){
            $event->setResponse(new RedirectResponse($this->router->generate('adminConfig')));
        }   
    } 
}
}

这段代码运行良好,但它只得到名为"admin"的路由,我想要的是检查这个路由的前缀,如果它等于"admin",则重定向到配置页面。

我错过了一些事情,我不知道如何解决这个问题。。。

您可以使用以下代码段检查路由是否包含"admin"前缀:

if (0 == strpos($route, 'admin')) {
    // perform redirect
}