Symfony: получить имена параметров из строки URL

1

Учитывая строку URL, такую как:

'my-route/{someId}/{someOption}'

Я бы хотел получить массив:

['someId', 'someOption']

Очевидно, что я могу разобрать его вручную с некоторым регулярным выражением, но мне было интересно, можно ли это сделать с помощью компонента Symfony (2. 6+) или чего-то еще...

Поэтому из любого места в моем коде я могу сделать что-то вроде:

$urlParamNames = $someComponent->getParamNamesFromUrl('my-route/{someId}/{someOption}');

ПРИМЕЧАНИЕ. Я знаю, что это не "стандартный" Symfony, и я знаю, что вы обычно получите параметры с маршрута, введенного в действие в качестве аргументов, и так далее... Объяснение, почему я хочу, чтобы это было очень длинной историей, поэтому просто предположим, что мне нужна именно эта функциональность, никаких других советов/предложений...

  • 0
    Во-первых, Symfony вводит их в качестве параметров в ваш метод действия. просто определите $someId и $someOption качестве параметров. во-вторых, вы должны быть в состоянии извлечь параметры с помощью службы маршрутизации
  • 0
    @ Джошуа, я знаю :) Смотрите записку, которую я добавил ...
Теги:
url

1 ответ

4
Лучший ответ

Это странная просьба. Но если вы действительно хотите:

use Symfony\Component\Routing\RouteCompiler;
use Symfony\Component\Routing\Route;

$compiledRoute = RouteCompiler::compile(new Route('my-route/{someId}/{someOption}'));
var_dump($compiledRoute->getVariables());

Вывод:

array(2) { [0]=> string(6) "someId" [1]=> string(10) "someOption" }

Без использования RouteCompiler напрямую:

use Symfony\Component\Routing\Route;

$route = new Route('my-route/{someId}/{someOption}');
$compiledRoute = $route->compile();
var_dump($compiledRoute->getVariables());

См. compiler_class если вам нужно сделать больше.

  • 0
    Круто, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню