Параметры кодирования в функции ветки Symfony

В моем приложении я использую функцию расширения Symfony Twig path создать ссылку на другой маршрут. Этот маршрут принимает параметр, поэтому я написал свою функцию пути следующим образом:

<a href="{{ path('r', {p: p}) }}">...</a>

В некоторых случаях заданное значение p содержит косую черту и Symfony завершается с ошибкой:

«Параметр« p »для маршрута« r »должен соответствовать« [^ /] ++ »(указано« … / … »), чтобы создать соответствующий URL.»)

Я ожидаю, что Symfony справится с этим и автоматически закодирует эти значения URL, но, очевидно, нет (или я делаю что-то не так).

Во всяком случае, мне удалось исправить это с url_encode Фильтр Twig, вот так:

<a href="{{ path('r', {p: p|url_encode}) }}">...</a>

Теперь в моем контроллере я принимаю этот параметр следующим образом:

/**
* @Route("/a/b/{p}", name="r")
**/
public function someAction($p) {
// ...
}

И, видимо, Symfony не выполняет URL-декодирование этого значения автоматически $pчто я и ожидал.

Я что-то здесь не так делаю, или действительно нужно самостоятельно обрабатывать кодирование / декодирование URL? В документации Symfony я не нахожу никаких подробностей об этом вообще.

1

Решение

Видимо, ограничения параметров по умолчанию не допускают косую черту. После «ослабления» их это сработало:

/**
* @Route("/a/b/{p}", name="r", requirements={"diagramResourceId"=".+"})
**/
public function someAction($p) {
// ...
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]