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