Silex中的可选路线参数

时间:2014-04-02 04:51:36

标签: php routing silex

我已经完成了一些工作,似乎无法弄清楚如何在Silex的网段中添加可选参数。所以我目前有这条路线:

    /{controller}/{method}/{param}

param通配符是我想要的选择。所以这个模式会选择像

这样的网址
    "Controller1/Method1" and "Controller2/Method2/Param"

建议?

1 个答案:

答案 0 :(得分:12)

只需将处理器设置为尽可能长的URL(包含所有部分,包括可选部分),如下所示:

$app->get('/controller/{method}/{param}', 
    function($method, $param) {
      // called both by `/controller/some-method/some-param-string`,
      // `/controller/some-other-method`, and even `/controller`
});

默认情况下,空字符串被指定为与省略的URL部分对应的参数的值。但您可以明确地覆盖它,如the doc

中所述
$app->get('/page/{pageName}', function($pageName) {
  // ...
})->value('pageName', 'index');

现在,当访问/page时,$pageName设置为'index'