获取请求的参数数量是否可能未知?
例如,这可行但不理想。
$app->get('/print/{template}/{arg1}/{arg2}', function ($template, $arg1, $arg2) use ($app) {
$str = $template . " " . $arg1 . " " . $arg2;
return $str;
})
->value('template', FALSE)
->value('arg1', FALSE)
->value('arg2', FALSE);
我想要的是为在模板变量之后输入的任何内容返回的参数数组。我看不出需要超过 4 或 5 个参数,但我希望它从一开始就尽可能灵活。
理想情况下我想做这样的事情,
$app->get('/pdf/{template}/{args[]}', function ($template, $args) use ($app) {
$str = $template;;
foreach($args as $arg)
$str .= " " . $arg;
return $str;
});
最佳答案
如果您真的想要,可以通过放宽对变量的要求轻松解决此限制。你可以做到 by using assert
:
$app->get('/pdf/{template}/{args}', function ($template, $args) {
...
})
->assert('args', '.*')
->convert('args', function ($args) {
return explode('/', $args);
});
通过使 $args
正则表达式更加宽松,它将匹配字符串的其余部分,即使它包含斜杠。参数转换器然后将匹配的字符串拆分成段。
总的来说,我同意@Sgoettschkes 的建议,为此使用查询字符串参数。如果您需要具有灵活段的高度动态路由,那么在大多数情况下您做错了什么。查询字符串通常更适合这些参数。
关于php - 使用 Silex 的灵事件态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194894/