具有可选参数的路由器的Laravel控制器方法

时间:2015-10-04 20:22:27

标签: laravel laravel-5

我希望有一个控制器处理网址,如... / item / list和... / item / list / 5。 第一个是显示所有项目,第二个是显示作者ID = 5的项目。

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之类的网址缺少参数。 有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为您的路线如下:

Route::get('item/{userid}', 'MyController@getList');

但如果没有身份证会怎么样? 让我们改变你的逻辑: 如果url中有userId,则显示用户的项目。如果没有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) {
        // ...
    }
}

答案 1 :(得分:0)

使用可选参数

创建路线
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) {
        // ...
    }
}