Laravel-5.8: 路由显示不 return 任何值
Laravel-5.8: route show don't return any values
在 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
方法中具有名称 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/
为了完整起见并作为@MaartenDev 正确答案的替代方案,如果您想定义与 资源路由一起使用的 参数 的名称 你可以使用 parameters()
函数,即:
Route::resource( 'our-project', 'ProjectController' )
->parameters(['our-project' => 'project']);
在 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
方法中具有名称 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/
为了完整起见并作为@MaartenDev 正确答案的替代方案,如果您想定义与 资源路由一起使用的 参数 的名称 你可以使用 parameters()
函数,即:
Route::resource( 'our-project', 'ProjectController' )
->parameters(['our-project' => 'project']);