【发布时间】:2014-04-02 04:51:35
【问题描述】:
我进行了一些查找,但似乎无法弄清楚如何在 Silex 的 URL 段中包含可选参数。所以我目前有这条路线:
/{controller}/{method}/{param}
param 通配符是我想要的可选。所以这个模式会选择像
这样的 URL "Controller1/Method1" and "Controller2/Method2/Param"
建议?
【问题讨论】:
我进行了一些查找,但似乎无法弄清楚如何在 Silex 的 URL 段中包含可选参数。所以我目前有这条路线:
/{controller}/{method}/{param}
param 通配符是我想要的可选。所以这个模式会选择像
这样的 URL "Controller1/Method1" and "Controller2/Method2/Param"
建议?
【问题讨论】:
只需为可能的最长 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'。
【讨论】: