我已经完成了一些工作,似乎无法弄清楚如何在Silex的网段中添加可选参数。所以我目前有这条路线:
/{controller}/{method}/{param}
param通配符是我想要的选择。所以这个模式会选择像
这样的网址 "Controller1/Method1" and "Controller2/Method2/Param"
建议?
答案 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'
。