Используйте пользовательские ключи в файлах маршрутизации - PullRequest
2 голосов
/ 17 декабря 2011

Есть ли способ добавить пользовательские пары ключ / значение в файл маршрутизации проекта Symfony2 и затем прочитать его в контроллере?

Например:

AcmeDemoBundle_Default_hello:
    pattern:  /hello/{name}
    defaults: { _controller: AcmeDemoBundle:Default:hello }
    SomeCustomKey: CustomValue

Я хочу использовать эти пары ключ / значение, чтобы добавить динамическое поведение в один из моих проектов. Например, я могу прочитать все маршруты с пользовательской парой ключ / значение и показать их пользователю для использования в динамических меню.

Ответы [ 3 ]

6 голосов
/ 07 августа 2013

Мне кажется, лучше использовать параметры, поскольку они не добавляются в параметры маршрута. И вы также можете получить доступ к этим параметрам в вашем контроллере.

В файле 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 голос
/ 17 декабря 2011

Вы можете добавить пару ключ / значение в раздел defaults и затем прочитать ее в контроллере:

AcmeDemoBundle_Default_hello:
    pattern:  /hello/{name}
    defaults: { _controller: AcmeDemoBundle:Default:hello, key: value }

А в контроллере:

echo $this->getRequest()->attributes->get('key');

Это должноработа.

0 голосов
/ 23 декабря 2011

Хотя предложенный метод @ alessandro1997 работает нормально, я нашел другой способ сделать это (что мне кажется лучше):

Вы можете добавить пары ключ / значение в секцию options маршрута.
Это лучше, потому что он не загромождается параметрами, которые передаются контроллеру (я так думаю, поправьте меня, если я ошибаюсь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...