Laravel 5.3 Route ::资源带有参数,然后在实际资源参数之前



我试图做这个休息设计,但我遇到了麻烦。

我有一个称为list

的资源

我想要在/list之前,它具有像{username}/list这样的动态参数,并且具有crud选项,例如编辑{username}/list/{id}/edit等。

使用::resource方法,您可以通过模型之间使用.来指示层次结构路由模式,例如:

Route::resource('user.list', 'ListController');

这将产生这样的东西:

/user/{user}/list/{list}

但是,您想拥有一个用户名 - 很好,我们只需要在您的AppProvidersRouteServiceProvider

中添加一些明确的模型绑定
Route::bind('user', function($value)(){
    if(is_numeric($value)) {
        return User::find($value);
    } else { 
        return User::where('username', $value)->first();
    }
});

如果$ value是数字,则将此explicit model binding添加此CC_8将尝试通过ID来解决用户。如果不是,那么它将尝试将值与用户表上的用户名列匹配。

希望这会有所帮助。

最新更新