Laravel-5.8:路线显示不返回任何值



在以前版本的Laravel中,我在show函数的控制器中使用了类似的东西

Route::resource( 'our-project', 'ProjectController' );
public function show( Project $project ) {
return view( 'portalComponents.projects.projectDetails', compact( 'project' ) );
}

我在 laravel 5.8 中尝试了相同的方法,但$project属性为空。

路由模型绑定不适用于our-project/1,因为 laravel 无法推断模型。它尝试将our-project占位符绑定到在show方法中具有名称名称的变量。这种说法并不存在。因为如果这样,$project变量将保持为空。

以下资源将起作用:

Route::resource( 'projects', 'ProjectController' );

因为这在路由中使用project占位符。检查php artisan route:list的输出

也可以具有具有不同前缀的相同资源:

Route::resource('projects', 'ProjectController');
Route::group(['prefix' => 'admin'], function () {
Route::resource('projects', 'ProjectController');
});

第一个是/projects/1的,第二个是/admin/projects/

为了完整起见并作为正确答案@MaartenDev替代,如果要定义用于资源路由参数的名称,可以使用parameters()函数,即:

Route::resource( 'our-project', 'ProjectController' )
->parameters(['our-project' => 'project']);

相关内容

  • 没有找到相关文章

最新更新