代码之家  ›  专栏  ›  技术社区  ›  Juliano Rafael

雄辩的路由隐式绑定Laravel 5.6不起作用

  •  0
  • Juliano Rafael  · 技术社区  · 6 年前

    我曾尝试开发一个应用程序,我想使用路由绑定,但出现了一些问题,我不知道它是什么。请看下面的代码,并帮助我它是什么错误。

    路线

    |        | PATCH    | api/v1/filial/{filial}                  |      | Genesis\Base\Filial\Controllers\FilialController@update                    | auth:api   |
    

    模型

    class Filial extends Model{
    
    /**
     * @var string
     */
    protected $table = "filiais"; ...
    

    控制器

    class FilialController extends BaseFormController{...
        public function update(FilialRequest $request, Filial $filial){
           dd($filial);
        }...
    

    然后输出为空模型。我不知道这是怎么回事,参数、模型、Uri所有这些东西都匹配。从这个项目开始,我就在使用Laravel 5.6。

    1 回复  |  直到 6 年前
        1
  •  6
  •   Alex Harris    6 年前

    确保在 kernel.php 您应该具备:

    protected $routeMiddleware = [
        ...
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ...
    ];
    

    您还需要确保路由中有绑定中间件:

    Route::group(['middleware' => ['bindings'], function() {
        // routes
    }
    

    如果这仍然不起作用,我会选择调查 explicit route binding :

    要注册显式绑定,请使用路由器的model方法 指定给定参数的类。您应该定义 的启动方法中的显式模型绑定 RouteServiceProvider类:

    public function boot()
    {
        parent::boot();
    
        Route::model('filial', App\Filial::class);
    }