无论如何在Symfony2项目的路由文件中添加自定义键/值对,然后在控制器中读取它?
例如:
AcmeDemoBundle_Default_hello:
pattern: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:hello }
SomeCustomKey: CustomValue
我想使用这些键/值对为我的一个项目添加一些动态行为。例如,我可以使用自定义键/值对读取所有路径并将其显示给用户,以便在动态菜单中使用。
答案 0 :(得分:6)
我觉得使用选项更好,因为它们没有添加到路径参数中。您还可以在控制器中访问这些选项。
在routing.yml文件中:
demo_page:
path: /
defaults: { _controller: DemoBundle:Default:index }
options:
key: value
在您的控制器中,您可以访问以下选项:
/**
* @var $router \Symfony\Bundle\FrameworkBundle\Routing\Router
*/
$router = $this->get('router');
$routeCollection = $router->getRouteCollection();
/**
* @var $route \Symfony\Component\Routing\Route
*/
$route = $routeCollection->get($this->getRequest()->get('_route'));
$allOptions = $route->getOptions();
$specificOption = $route->getOption('key');
答案 1 :(得分:1)
您可以将键/值对添加到defaults
部分,然后在控制器中读取它:
AcmeDemoBundle_Default_hello:
pattern: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:hello, key: value }
在控制器中:
echo $this->getRequest()->attributes->get('key');
它应该有用。
答案 2 :(得分:0)
尽管@ alessandro1997提出的方法运行正常但我找到了另一种方法(我认为这样做更好):
您可以将键/值对添加到路线的options
部分
它更好,因为它不会与传递给控制器的参数混乱(我想是的,如果我错了,请纠正我。)