0
我構建了kernel listener some time ago,將用戶重定向到某種語言。內核監聽器中的訪問路由選項
有幾個頁面,沒有翻譯,並且用戶不應該被重定向。當我使用JMSI18nRoutingBundle時,我想,這將是使用包中的'options:{i18n:false}'設置的最佳方式。
我需要能夠讀取內核偵聽器中當前路由的選項。這可能嗎?
我構建了kernel listener some time ago,將用戶重定向到某種語言。內核監聽器中的訪問路由選項
有幾個頁面,沒有翻譯,並且用戶不應該被重定向。當我使用JMSI18nRoutingBundle時,我想,這將是使用包中的'options:{i18n:false}'設置的最佳方式。
我需要能夠讀取內核偵聽器中當前路由的選項。這可能嗎?
對於首先獲取路線選項,您必須先獲取路線集合,然後從路線集合中獲取路線對象,具體取決於路線名稱。
因此,您的偵聽器將對路由器有依賴性。你的構造函數會看起來像這樣。
/**
* @var $routeCollection \Symfony\Component\Routing\RouteCollection
*/
private $_routeCollection;
function __construct(\Symfony\Bundle\FrameworkBundle\Routing\Router $router)
{
$this->_routeCollection = $router->getRouteCollection();
}
現在在您的偵聽器方法中,您將需要請求對象來獲取當前路由名稱。例如,如果您的偵聽器方法是onKernelController()
function onKernelController(FilterControllerEvent $event)
{
/**
* @var $route \Symfony\Component\Routing\Route
*/
$route = $this->_routeCollection->get($event->getRequest()->get('_route'));
// @var $allOptions will have all the options for current route.
$allOptions = $route->getOptions();
// To get specific option you can use getOption()
$someSpecificOption = $route->getOption('<key>');
}