Laravel报错Route [checklists.updateRichiesta]未定义,如何解决?
解决Laravel路由
checklists.updateRichiesta未定义的问题 嘿,这个报错我之前也碰到过,本质就是你调用了一个没在路由文件里注册的自定义路由——Route::resource只会生成RESTful标准的7个路由,并不会自动包含你写的updateRichiesta这个自定义方法对应的路由。下面是具体的解决步骤:
步骤1:注册自定义路由
在你的Route.php文件里,一定要把自定义路由放在resource路由的前面(Laravel路由是按匹配顺序执行的,自定义路由得优先于resource路由),添加这段代码:
// 注册自定义PUT路由,指定路由名称和对应的控制器方法 Route::put('checklists/updateRichiesta/{id}', 'ChecklistController@updateRichiesta')->name('checklists.updateRichiesta'); // 保留原有的resource路由 Route::resource('checklists', 'ChecklistController');
步骤2:验证路由是否注册成功
你可以用Laravel的Artisan命令快速查看所有已注册的路由,确认自定义路由是否存在:
php artisan route:list
在输出结果里找名称为checklists.updateRichiesta的条目,确认它的请求方法是PUT,路径和控制器方法对应上就没问题。
步骤3:确认视图中的路由调用正确
你的视图代码里的路由调用是没问题的,不过可以再核对下参数传递:
<div> {!! Form::open(['method' => 'PUT','route' => ['checklists.updateRichiesta', $richiesta->id]]) !!} <button type="submit" onclick="return ConfirmDelete();" class="#"> <i class="fa fa-times"></i> </button> {!! Form::close() !!} </div>
这里$richiesta->id会正确传递给路由的{id}参数,和控制器方法里的$id对应,完全没问题。
小提示
以后再碰到类似路由未定义的问题,第一时间用php artisan route:list排查,能快速定位路由是否注册、名称是否写错这类问题。
内容的提问来源于stack exchange,提问作者Carmine Rub
相关产品推荐
相关产品推荐

