代码之家  ›  专栏  ›  技术社区  ›  nowox

用参数调用控制器?

  •  -1
  • nowox  · 技术社区  · 5 年前

    假设我有两个模型:

    1. 用户列表 User
    2. 大理石清单 Marble 它属于一个 用户

    我想把所有现有的大理石都拿来 api/marbles 只有我的弹珠 api/user/marbles 。这个想法是避免一条名为的路线 api/marbles?owned=true

    在我的API路线中,我有以下内容:

    Route::get('marbles', 'MarbleController@index');
    Route::get('user/marbles', 'MarbleController@index(true)');
    

    然后在我的MarbleController中:

    class MarbleControllerextends Controller
    {
        function index($owned = false) {
            return $owned ? Marble::where('user_id', Auth::id())->get() : Marble::all();
        }
    }
    

    不幸的是 MarbleController@index(true) 真的不起作用,因为 (true) Laravel不会接受不填充可选项 $owned 变量。

    是否有方法避免定义新方法,例如 Route::get('user/marbles', 'MarbleController@owned');

        function owned() {
            return $this->index(true);
        }
    
    1 回复  |  直到 5 年前
        1
  •  -1
  •   Ankit Singh    5 年前
    Route::get('marbles/{me?}', 'MarbleController@index'); will work fine.
    

    在这里 me 是一个可选参数。如果你忽略它,它将需要 false 否则 true 因为它的价值。

    推荐文章