Routing 在路由文件中使用自定义密钥
是否在Symfony2项目的路由文件中添加自定义键/值对,然后在控制器中读取 例如:Routing 在路由文件中使用自定义密钥,routing,symfony,Routing,Symfony,是否在Symfony2项目的路由文件中添加自定义键/值对,然后在控制器中读取 例如: AcmeDemoBundle_Default_hello: pattern: /hello/{name} defaults: { _controller: AcmeDemoBundle:Default:hello } SomeCustomKey: CustomValue 我想使用这些键/值对为我的一个项目添加一些动态行为。例如,我可以使用自定义键/值对读取所有路由,并将它们显示给用户
AcmeDemoBundle_Default_hello:
pattern: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:hello }
SomeCustomKey: CustomValue
我想使用这些键/值对为我的一个项目添加一些动态行为。例如,我可以使用自定义键/值对读取所有路由,并将它们显示给用户,以便在动态菜单中使用。您可以将该键/值对添加到
默认值
部分,然后在控制器中读取:
AcmeDemoBundle_Default_hello:
pattern: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:hello, key: value }
echo $this->getRequest()->attributes->get('key');
在控制器中:
AcmeDemoBundle_Default_hello:
pattern: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:hello, key: value }
echo $this->getRequest()->attributes->get('key');
它应该会起作用。尽管@alessandro1997提出的方法效果很好,但我找到了另一种方法(我认为更好): 您可以将键/值对添加到路由的
选项
部分。它更好,因为它不会与传递给控制器的参数混淆(我想是的,如果我错了请纠正我)。我觉得最好使用选项,因为它们没有添加到路由参数中。您还可以在控制器中访问这些选项 在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');
我同意这个答案。但是,您能否举例说明如何访问路径的选项(在控制器或视图中)?是否可以从twig访问此变量?(无需从控制器传递)