在以前版本的Laravel中,我在显示功能的控制器中使用了类似的东西。
Route::resource( 'our-project', 'ProjectController' );
public function show( Project $project ) {
return view( 'portalComponents.projects.projectDetails', compact( 'project' ) );
}我在Laravel5.8中尝试了同样的方法,但是$project属性是空的。
发布于 2019-08-18 18:39:46
路由模型绑定不适用于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/
发布于 2019-08-19 20:08:59
为了更完整,并作为@MaartenDev正确答案的替代,如果您想定义与资源路由一起使用的参数的名称,可以使用parameters()函数,即:
Route::resource( 'our-project', 'ProjectController' )
->parameters(['our-project' => 'project']);https://stackoverflow.com/questions/57547350
复制相似问题