Учитывая строку URL, такую как:
'my-route/{someId}/{someOption}'
Я бы хотел получить массив:
['someId', 'someOption']
Очевидно, что я могу разобрать его вручную с некоторым регулярным выражением, но мне было интересно, можно ли это сделать с помощью компонента Symfony (2. 6+) или чего-то еще...
Поэтому из любого места в моем коде я могу сделать что-то вроде:
$urlParamNames = $someComponent->getParamNamesFromUrl('my-route/{someId}/{someOption}');
ПРИМЕЧАНИЕ. Я знаю, что это не "стандартный" Symfony, и я знаю, что вы обычно получите параметры с маршрута, введенного в действие в качестве аргументов, и так далее... Объяснение, почему я хочу, чтобы это было очень длинной историей, поэтому просто предположим, что мне нужна именно эта функциональность, никаких других советов/предложений...
Это странная просьба. Но если вы действительно хотите:
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
если вам нужно сделать больше.
$someId
и$someOption
качестве параметров. во-вторых, вы должны быть в состоянии извлечь параметры с помощью службы маршрутизации