给定一个URL字符串,如:
'my-route/{someId}/{someOption}'
我想得到一个像:
这样的数组['someId', 'someOption']
显然我可以用一些正则表达式手动解析它,但我想知道是否可以使用一些Symfony(2.6+)组件或其他东西来做它...
因此,无论在我的代码中,我都可以执行以下操作:
$urlParamNames = $someComponent->getParamNamesFromUrl('my-route/{someId}/{someOption}');
注意:我知道这不是"标准" Symfony,我知道你通常会从注入动作的路径中获取参数作为参数等等......解释为什么我想要这个将是一个很长的故事,所以假设我需要完全该功能,没有其他建议/建议......
答案 0 :(得分: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
选项。