LeB*_*eau 1 binding ioc-container laravel-5
我有路
http://192.168.10.15/user/33/edit
Run Code Online (Sandbox Code Playgroud)
我试图根据url id返回用户.
public function edit($id, \App\User $user)
{
dd($user->id);
return view('user.update');
}
Run Code Online (Sandbox Code Playgroud)
id返回null,我该怎么做?
小智 12
如果您最近升级到 Laravel 5.3 及更高版本,您可能需要检查您是否已更新laravel/app/Http/Kernel.php以注册路由中间件以进行绑定替换。
路由模型绑定现在使用中间件完成。所有应用程序都应该将 Illuminate\Routing\Middleware\SubstituteBindings 添加到您的 app/Http/Kernel.php 文件中的 Web 中间件组:
Run Code Online (Sandbox Code Playgroud)\Illuminate\Routing\Middleware\SubstituteBindings::class,您还应该在 HTTP 内核的 $routeMiddleware 属性中注册一个用于绑定替换的路由中间件:
Run Code Online (Sandbox Code Playgroud)'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,注册此路由中间件后,您应该将其添加到 api 中间件组:
Run Code Online (Sandbox Code Playgroud)'api' => [ 'throttle:60,1', 'bindings', ],
要使路由绑定工作,您应该具有类型提示的变量名称与路径段名称匹配,如所需的文档:
Laravel自动解析路径或控制器操作中定义的Eloquent模型,其类型提示的变量名称与路径段名称匹配.例如:
Run Code Online (Sandbox Code Playgroud)Route::get('api/users/{user}', function (App\User $user) { return $user->email; });由于$ user变量是类型提示为App\User Eloquent模型且变量名称与{user} URI段匹配,因此Laravel将自动注入具有与请求URI中的相应值匹配的ID的模型实例.如果在数据库中找不到匹配的模型实例,则将自动生成404 HTTP响应.
对于你的情况:
Route::get('/users/{user}/edit', 'YourController@edit');
Run Code Online (Sandbox Code Playgroud)
在你的控制器中:
public function edit(\App\User $user)
{
dd($user->id);
return view('user.update')->withUser($user);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1783 次 |
| 最近记录: |