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

时间:2019-08-18 18:34:43

标签: laravel laravel-5 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属性为空。

2 个答案:

答案 0 :(得分:3)

路由模型绑定不适用于our-project/1,因为laravel无法推断模型。它尝试将our-project占位符绑定到在show方法中具有名称name的变量。该论点不存在。因为如果这样,$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/

答案 1 :(得分:2)

为了完整起见,并替代@MaartenDev正确答案,如果您想定义与资源路线一起使用的参数的名称,则可以使用parameters()函数,即:

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