如何在Laravel 5.6中正确使用可选的路由参数?

时间:2018-06-27 09:18:21

标签: php laravel laravel-5 laravel-5.6

我正在尝试使用Laravel 5.6创建一个API,但是,在我看来,在参数之前/之后无法使用可选的路由参数。

我想实现以下目标:

Route::get('api/lists/{id?}/items', 
[
    'as'    => 'api/lists/items/get', 
    'uses'  => 'ListsController@getListItems'
]);

在上述情况下,如果我尝试访问api/lists/1/items,则会显示该页面。另一方面,如果我尝试访问api/lists/items,则表示找不到该页面。

我基本上想要的是,如果未指定列表ID,Laravel应获取所有列表ID的项目,否则应仅获取特定ID的项目。

问:如何在“路径词”之间设置可选参数?可能吗还是对此有替代解决方案?

2 个答案:

答案 0 :(得分:4)

据我所知,在网址中间无法使用可选参数。

here所述,您可以尝试通过以下方式解决此问题:为可选参数允许0并加载所有项目。

但是,我建议您在此处使用两条不同的路线以匹配您想要的一切:

api/lists/items
api/lists/{id?}/items

答案 1 :(得分:0)

您必须为控制器中的可选参数提供默认值:

路线

X

ListsController

Route::get('api/lists/{id?}/items', 'ListsController@getListItems');

Reference