在升级laravel 5.2到5.3之后,无法在Route :: model中绑定模型

时间:2017-12-25 15:38:16

标签: laravel laravel-5 laravel-5.2 laravel-5.3 model-binding

此代码适用于laravel 5.2但不适用于laravel 5.3。 我在RouteServiceProvider

\Route::model('users', \App\User::class, function ($value) {
    return User::where('name', $value)
              ->first();
});

在我的刀片中,我要求采取行动:

'<a href="{{ action('UserController@show',[Auth::user()->name]) }}">{{Auth::user()name}}</a>'

在我的UserController

public function show($user)
{
    return view('users.user.show', compact('user'));
}

现在$user只有Auth::user()->name例如'qwerty'。但不是类User的对象它是如何更早的。可能有什么问题?

1 个答案:

答案 0 :(得分:1)

您应该确保添加了:

\Illuminate\Routing\Middleware\SubstituteBindings::class,

web文件中的api或/和app/Http/Kernel.php中间件。

upgrade guide中,您可以阅读:

  

现在使用中间件完成路径模型绑定。所有   应用程序应添加   照亮\ Routing \ Middleware \ SubstituteBindings到您的网站   app / Http / Kernel.php文件中的中间件组:

     

\照亮\路由\中间件\ SubstituteBindings ::类,

     

您还应该注册路由中间件以进行绑定替换   在HTTP内核的$ routeMiddleware属性中:

     

&#39;绑定&#39; =&GT;   \照亮\路由\中间件\ SubstituteBindings ::类,

     

一旦注册了此路由中间件,您应该将其添加到   api中间件组:

     

&#39; API&#39; =&GT; [       &#39;节气门:60,1&#39 ;,       &#39;绑定&#39;,],