Silex中的可选路线参数

Wal*_* IV 5 php routing silex

我做了一些寻找,似乎无法弄清楚如何在Silex的URL段中有一个可选参数.所以我目前有这条路线:

    /{controller}/{method}/{param}
Run Code Online (Sandbox Code Playgroud)

param通配符是我想要的可选项.所以这个模式会选择像这样的URL

    "Controller1/Method1" and "Controller2/Method2/Param"
Run Code Online (Sandbox Code Playgroud)

建议?

rai*_*7ow 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`
});
Run Code Online (Sandbox Code Playgroud)

默认情况下,空字符串被指定为与省略的URL部分对应的参数的值.但您可以显式覆盖它,如文档所述:

$app->get('/page/{pageName}', function($pageName) {
  // ...
})->value('pageName', 'index');
Run Code Online (Sandbox Code Playgroud)

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