php - 使用 Silex 的灵事件态路由

标签 php symfony routing silex

获取请求的参数数量是否可能未知?

例如,这可行但不理想。

$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/

相关文章:

php - 如果用户闲置 10 分钟,则使 Zend session 过期

php - Symfony 3.2 FOSUserBundle Ajax 登录

symfony - 使用 symfony2 路由组件(在 symfony2 之外)

Symfony2 配置数据库存储 session

networking - 两国之间的私有(private)应用IP路由

ruby-on-rails-3 - Rails——路由 : using a sub-directory before controller/action

php - 错误消息自动隐藏/消失并在POST后停留在输入/表单页面上

javascript - 如何使用内联函数调用在wordpress中调用javascript函数?

php - 正确的语法以在iframe中回显变量

php - Elasticsearch无法连接到主机? 500内部服务器错误-HttpException