【发布时间】:2016-12-08 18:56:29
【问题描述】:
我尝试进行这种 REST 设计,但遇到了麻烦。
我有一个名为list的资源
我希望在/list 之前有一个动态参数,例如{username}/list,并具有编辑{username}/list/{id}/edit 等CRUD 选项。
【问题讨论】:
我尝试进行这种 REST 设计,但遇到了麻烦。
我有一个名为list的资源
我希望在/list 之前有一个动态参数,例如{username}/list,并具有编辑{username}/list/{id}/edit 等CRUD 选项。
【问题讨论】:
使用::resource 方法,您可以通过在模型之间使用. 来指定分层路由模式,例如:
Route::resource('user.list', 'ListController');
这将产生如下内容:
/user/{user}/list/{list}
无论你想拥有一个用户名 - 这很好,我们只需要在你的 App\Providers\RouteServiceProvider 中添加一些显式模型绑定
Route::bind('user', function($value)(){
if(is_numeric($value)) {
return User::find($value);
} else {
return User::where('username', $value)->first();
}
});
添加此explicit model binding 将尝试通过ID 首先通过dependency injection 解析用户,如果$value 是数字。如果不是,那么它将尝试将该值与用户表上的用户名列进行匹配。
希望这会有所帮助。
【讨论】: