在路由文件中使用自定义键

Omi*_*gar 2 routing symfony

无论如何在Symfony2项目的路由文件中添加自定义键/值对,然后在控制器中读取它?

例如:

AcmeDemoBundle_Default_hello:
    pattern:  /hello/{name}
    defaults: { _controller: AcmeDemoBundle:Default:hello }
    SomeCustomKey: CustomValue
Run Code Online (Sandbox Code Playgroud)

我想使用这些键/值对为我的一个项目添加一些动态行为.例如,我可以使用自定义键/值对读取所有路径并将其显示给用户,以便在动态菜单中使用.

adi*_*tya 6

我认为使用选项是一个更好的主意,因为它们没有添加到路径参数中.您还可以在控制器中访问这些选项.

在routing.yml文件中:

demo_page:
    path: /
    defaults: { _controller: DemoBundle:Default:index }
    options:
        key: value
Run Code Online (Sandbox Code Playgroud)

在您的控制器中,您可以访问以下选项:

    /**
     * @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');
Run Code Online (Sandbox Code Playgroud)