使用参数调用控制器?
Call a controller with a parameter?
假设我有两个模型:
- 用户列表
User
- 弹珠列表
Marble
属于一个 User
我想用 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);
}
Route::get('marbles/{me?}', 'MarbleController@index'); will work fine.
这里me
是可选参数。如果省略它,它将采用 false
否则 true
作为它的值。
假设我有两个模型:
- 用户列表
User
- 弹珠列表
Marble
属于一个User
我想用 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);
}
Route::get('marbles/{me?}', 'MarbleController@index'); will work fine.
这里me
是可选参数。如果省略它,它将采用 false
否则 true
作为它的值。