我想做的是,我有一个管理面板,我可以用"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
}