Symfony2:如何获取路由前缀

时间:2015-07-04 16:32:41

标签: php symfony router

我想知道的是,我有一个管理面板,我可以通过管理员访问' 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')));
        }   
    } 
}

}

此代码工作正常,但是,它只获得名为&#39; admin&#39;的路由,我想要的是检查此路由的前缀,如果它等于&#39; admin& #39;重定向到配置页面。

我错过了什么,我不知道如何解决这个问题......

1 个答案:

答案 0 :(得分:1)

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

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