具有可选参数的路由器Laravel控制器方法
我想要一个控制器来处理像…/item/list和…/item/list/5这样的url。 第一个将显示所有项目,第二个将显示其作者ID为5的项目具有可选参数的路由器Laravel控制器方法,laravel,laravel-5,Laravel,Laravel 5,我想要一个控制器来处理像…/item/list和…/item/list/5这样的url。 第一个将显示所有项目,第二个将显示其作者ID为5的项目 public function getList($userid) { $items = \DB::table('items')->get(); if ($userid) $items = \DB::table('items')->where('user_id', '=', $userid)->get(); fo
public function getList($userid) {
$items = \DB::table('items')->get();
if ($userid) $items = \DB::table('items')->where('user_id', '=', $userid)->get();
foreach ($items as $item) {
// ...
}
}
类似于../item
的URL缺少参数。
有办法解决这个问题吗?我想你的路线是这样的:
Route::get('item/{userid}', 'MyController@getList');
但是如果没有身份证怎么办?
让我们像这样改变你的逻辑:
如果url中有用户ID,则显示用户的项目。如果没有id,则显示所有
因此,改变你的路线:
Route::get('item/{userid?}', 'MyController@getList');
还有你的功能:
public function getList($userid = null) {
$items = \DB::table('items')->get();
if ($userid) $items = \DB::table('items')->where('user_id', '=', $userid)->get();
foreach ($items as $item) {
// ...
}
}
使用可选参数创建管线
Route::get('item/list/{userid}', 'MyController@getList');
然后在函数中更改userid
,使其具有默认参数值
public function getList($userid = '') {
$query = \DB::table('items');
if ($userid) {
$query->where('user_id', '=', $userid);
}
$items = $query->get();
foreach ($items as $item) {
// ...
}
}