Laravel-5.8:路线表演don';不返回任何值
在以前版本的Laravel中,我在控制器的show函数中使用了类似的东西Laravel-5.8:路线表演don';不返回任何值,laravel,laravel-5,laravel-5.8,Laravel,Laravel 5,Laravel 5.8,在以前版本的Laravel中,我在控制器的show函数中使用了类似的东西 Route::resource('ourproject','ProjectController'); 公共功能展示(项目$Project){ 返回视图('portalComponents.projects.projectDetails',compact('project'); } 我在laravel 5.8中也尝试了同样的方法,但是$project属性为空。路由模型绑定对我们的项目/1不起作用,因为laravel无法推断
Route::resource('ourproject','ProjectController');
公共功能展示(项目$Project){
返回视图('portalComponents.projects.projectDetails',compact('project');
}
我在laravel 5.8中也尝试了同样的方法,但是
$project
属性为空。路由模型绑定对我们的项目/1
不起作用,因为laravel无法推断模型。它尝试将ourproject
占位符绑定到show
方法中具有名称的变量。这个论点不存在。因为如果这样做,$project
变量将保持为空
以下资源将发挥作用:
Route::resource( 'projects', 'ProjectController' );
因为这在管线中使用了项目
占位符。检查php artisan route:list的输出
同样的资源也可以有不同的前缀:
Route::resource('projects', 'ProjectController');
Route::group(['prefix' => 'admin'], function () {
Route::resource('projects', 'ProjectController');
});
第一个是
/projects/1
,第二个是/admin/projects/
,为了完整起见,作为@MaartenDev right answer的替代方案,如果要定义用于资源路由的参数名称,可以使用parameters()
函数,即:
Route::resource('ourproject'、'ProjectController')
->参数(['our-project'=>'project']);
谢谢这很好。这里还有一个问题,我可以有两个同名但前缀不同的路由,比如路由::组(['prefix'=>'admin'],函数(){Route::resource('projects','ProjectController');})代码>和路由::资源('project','ProjectController')换言之,这是正确的做法吗?是的,这很好而且是可能的!签出最新编辑:)@YousefAltafIn除了@MaartenDev perfect answer之外,您可以定义与parameters()
函数一起使用的参数的名称,即:Route::resource('our-project','ProjectController')->parameters(['our-project'=>'project'])代码>@dparoli谢谢,请添加答案,这可能会帮助其他人