Php Silex中的可选路由参数

Php Silex中的可选路由参数,php,routing,silex,Php,Routing,Silex,我做了一些研究,但似乎不知道如何在Silex的URL段中使用可选参数。所以我现在有这个路线: /{controller}/{method}/{param} param通配符是我希望可选的。因此,此模式将拾取如下URL "Controller1/Method1" and "Controller2/Method2/Param" 建议?只需将处理器设置为尽可能长的URL(包含所有部分,包括可选部分),如下所示: $app->get('/controller/{method}/

我做了一些研究,但似乎不知道如何在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部分相对应的参数值。但您可以显式重写此项,如中所述:

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

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