【问题标题】:Laravel 5.3 Route::resource with parameters before the actual resource parameterLaravel 5.3 Route::resource 在实际资源参数之前带有参数
【发布时间】:2016-12-08 18:56:29
【问题描述】:

我尝试进行这种 REST 设计,但遇到了麻烦。

我有一个名为list的资源

我希望在/list 之前有一个动态参数,例如{username}/list,并具有编辑{username}/list/{id}/edit 等CRUD 选项。

【问题讨论】:

    标签: php laravel routes crud


    【解决方案1】:

    使用::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 是数字。如果不是,那么它将尝试将该值与用户表上的用户名列进行匹配。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-26
      • 2015-12-12
      • 2021-01-07
      • 2016-05-23
      • 1970-01-01
      • 2011-10-02
      • 2015-07-13
      • 2014-11-13
      相关资源
      最近更新 更多