我如何将第二个参数作为可选参数传递给 LUMEN 中的路由?

-1 php laravel lumen

我的routes/web.php 文件

$router->group(['prefix' => 'api/v1'], function () use ($router) {    
    $router->get('post/{string}/comment/{length?}', 'PostController@index');
});
Run Code Online (Sandbox Code Playgroud)

我的控制器文件

public function index($string, $length = 0){
    // boy
}
Run Code Online (Sandbox Code Playgroud)

要执行的 URL

localhost/project/public/api/v1/post/abcd/comment/1
    OR
localhost/project/public/api/v1/post/abcd/comment
Run Code Online (Sandbox Code Playgroud)

我想要控制器中的字符串和长度值,字符串不是可选参数,但长度是可选的,如果我不提供它,它应该为 0

Leo*_*mer 6

Lumen 使用不同的路由器,因此您需要稍微不同地定义可选参数:

文档中

$app->get('user[/{name}]', function ($name = null) {
    return $name;
});
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下它将是:

$router->get('post/{string}/comment[/{length}]', 'PostController@index');
Run Code Online (Sandbox Code Playgroud)