Laravel 8.1开发中Post表无法更新及posts.store路由报错问题
问题排查清单
1. 帖子数据无法写入数据库的核心原因
PostController@store方法中,负责入库的Post::create()代码段目前被整段注释,请求校验通过后没有任何实际数据库操作,自然不会写入数据。- 即便取消注释,当前
Post模型的$fillable批量赋值白名单仅包含body字段,缺失user_id字段,会触发Laravel批量赋值保护拦截,导致入库失败。需要在$fillable数组中补充user_id字段。
2. 提示posts.store路由未定义的原因
- 你在
web.php中仅给GET方式的/posts路由定义了posts别名,POST方式的/posts路由完全没有绑定别名。 - 手动编写的路由不会自动遵循Laravel资源路由的命名规则,如果在表单提交地址里写
route('posts.store'),系统找不到对应名称的路由就会抛出未定义错误。两种修复方式二选一即可:- 给POST路由补上对应别名:
Route::post('/posts', [PostController::class, 'store'])->name('posts.store'); - 把表单的路由引用改回已定义的
route('posts')
- 给POST路由补上对应别名:
3. 其他代码报错隐患
- blade模板中的if判断多写了一个右括号:
@if ($posts->count())),会触发模板语法解析错误,删掉多余的)即可。 - 入库逻辑执行完成后,控制器没有编写重定向返回逻辑,提交成功后会出现无内容的空白页面,需要补充跳转代码:
return redirect()->route('posts')->with('status', '帖子发布成功'); web.php中重复定义了两次GET方式的/login路由,属于冗余代码,可以删掉重复的那段。
内容的提问来源于stack exchange,提问作者Emmanuel
相关产品推荐
相关产品推荐

