Php 从Laravel 5.2到Laravel 5.4的RouterService Provider
以前我在Laravel5.2中使用过这段代码 路由器服务提供者Php 从Laravel 5.2到Laravel 5.4的RouterService Provider,php,laravel,routes,Php,Laravel,Routes,以前我在Laravel5.2中使用过这段代码 路由器服务提供者 public function boot(Router $router) { parent::boot($router); // Model binding $router->model('house', 'App\house'); } public function boot() { // parent::boot(); Route::model('house', Ap
public function boot(Router $router)
{
parent::boot($router);
// Model binding
$router->model('house', 'App\house');
}
public function boot()
{
//
parent::boot();
Route::model('house', App\House::class);
}
和在控制器中
public function show(House '$house')
{
return view('house.show', compact('house'));
}
当我升级到Laravel5.4时,这段代码不起作用。
所以我在RouterServiceProvider中将代码更改为这个
public function boot(Router $router)
{
parent::boot($router);
// Model binding
$router->model('house', 'App\house');
}
public function boot()
{
//
parent::boot();
Route::model('house', App\House::class);
}
但我不知道下面的控制器代码要更改什么
public function show(House '$house')
{
return view('house.show', compact('house'));
}
,当我运行代码时,我得到了这个错误
(1/1)fatalthrowable错误
分析错误:语法错误,意外的“$house”(T_常量\u封装的\u字符串),应为变量(T_变量)
我需要路由模型绑定来简化代码->(house=house::FindOrFail($id);)
谢谢你的帮助 改变这个
public function show(House '$house')
{
return view('house.show', compact('house'));
}
对此
public function show(House $house)
{
return view('house.show', compact('house'));
}
隐式绑定开箱即用: 隐式绑定 Laravel自动解析routes或中定义的雄辩模型 类型提示变量名称与路由匹配的控制器操作 段名称。例如:
Route::get('api/users/{user}',函数(App\user$user){
返回$user->email;
});
因为$user
变量的类型暗示为App\user
雄辩
模型和变量名与{user}
URI段Laravel匹配
将自动注入具有ID
匹配的模型实例
请求URI中的对应值。如果匹配模型
在数据库中找不到实例,将显示404
HTTP响应
自动生成
但是,如果要显式声明,可以检查文档的
显式绑定
要注册显式绑定,请使用路由器的model方法
指定给定参数的类。你应该定义你的目标
的启动方法中的显式模型绑定
RouteServiceProvider
class:
公共函数启动()
{
父::boot();
路由::模型('user',App\user::class);
}
接下来,定义包含{user}
参数的路由:
Route::get('profile/{user}',函数(App\user$user){
//
});
由于我们已将所有{user}
参数绑定到App\user
模型,因此
用户
实例将被注入路由。例如,一个
请求profile/1
将从
ID为1
的数据库
如果在数据库中找不到匹配的模型实例,则a404
HTTP响应将自动生成
因此,在你的情况下:
RouteServiceProvider.php
公共函数启动()
{
父::boot();
路线::模型('house',App\house::类);
}
然后在控制器中:
HousesController.php
公共功能展示(House$House)
{
返回视图('house.show',紧凑型('house');
}
您的函数声明错误。请先阅读并练习编程,特别是PHP编程,然后尝试使用Laravel等框架。在我更改为新代码后,没有错误。但是表单中没有查看数据,应该是查看id为1的房屋数据:因为链接是->在我更改为新代码后,没有错误。但是表单中没有查看数据,应该查看id为1的房屋数据:因为链接是->@AndryWibowo。请告诉我们您的路线是如何设置的。它应该是这样的:GET/house/{house}