Events 内核侦听器中的访问路由选项

Events 内核侦听器中的访问路由选项,events,symfony,internationalization,routing,symfony-2.1,Events,Symfony,Internationalization,Routing,Symfony 2.1,我构建了一个,将用户重定向到某种语言 有几个页面没有翻译,不应该重定向用户。当我使用JMSI18nRoutingBundle时,我想,这将是使用bundle中的“options:{i18n:false}”设置的最佳方式 我需要能够在内核侦听器中读取当前路由的选项。这是否可能?要首先获取路由选项,必须获取路由集合,并且必须根据路由名称从路由集合中获取路由对象 因此,您的侦听器将依赖于路由器。你的构造器看起来像这样 /** * @var $routeCollection \Symfony\Comp

我构建了一个,将用户重定向到某种语言

有几个页面没有翻译,不应该重定向用户。当我使用JMSI18nRoutingBundle时,我想,这将是使用bundle中的“options:{i18n:false}”设置的最佳方式


我需要能够在内核侦听器中读取当前路由的选项。这是否可能?

要首先获取路由选项,必须获取路由集合,并且必须根据路由名称从路由集合中获取路由对象

因此,您的侦听器将依赖于路由器。你的构造器看起来像这样

/**
 * @var $routeCollection \Symfony\Component\Routing\RouteCollection
 */
private $_routeCollection;

function __construct(\Symfony\Bundle\FrameworkBundle\Routing\Router $router)
{
    $this->_routeCollection = $router->getRouteCollection();
}
现在,在侦听器方法中,您需要请求对象来获取当前路由名称。例如,如果侦听器方法是onKernelController()

内核控制器上的函数(FilterControllerEvent$事件) { /** *@var$route\Symfony\Component\Routing\route */ $route=$this->\u routeCollection->get($event->getRequest()->get('u route'); //@var$allOptions将拥有当前路线的所有选项。 $allOptions=$route->getOptions(); //要获取特定选项,可以使用getOption() $someSpecificOption=$route->getOption(“”); }
要首先获取路由选项,您必须获取路由集合,从路由集合中,您必须根据路由名称获取路由对象

因此,您的侦听器将依赖于路由器。你的构造器看起来像这样

/**
 * @var $routeCollection \Symfony\Component\Routing\RouteCollection
 */
private $_routeCollection;

function __construct(\Symfony\Bundle\FrameworkBundle\Routing\Router $router)
{
    $this->_routeCollection = $router->getRouteCollection();
}
现在,在侦听器方法中,您需要请求对象来获取当前路由名称。例如,如果侦听器方法是onKernelController()

内核控制器上的函数(FilterControllerEvent$事件) { /** *@var$route\Symfony\Component\Routing\route */ $route=$this->\u routeCollection->get($event->getRequest()->get('u route'); //@var$allOptions将拥有当前路线的所有选项。 $allOptions=$route->getOptions(); //要获取特定选项,可以使用getOption() $someSpecificOption=$route->getOption(“”); }
您好,您的答案似乎正是我所需要的,但我有一个错误
\uu construct()“引用了类“Symfony\Component\Routing\Router”,但不存在这样的服务
。我想我忘了在某个地方定义什么,但我不知道是什么(注意:我使用的是Symfony 4)。此解决方案是为Symfony 2提出的。框架将通过对其逻辑和内部工作的几项重大更改来实现,因此这肯定不再适用于Symfony 4。您好,您的答案似乎是我所需要的,但我有一个错误
\uu construct()“引用类”Symfony\Component\Routing\Router“但不存在此类服务
。我想我忘了在某个地方定义一些东西,但我不知道是什么(注意:我使用的是Symfony 4)。该框架通过对其逻辑和内部工作的几次重大更改进行了改进,因此这肯定不会再适用于Symfony 4。