You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 表单验证失败跳转后 withInput() 无法返回表单值问题解决

问题根因
  • 最核心的原因是你当前验证失败后的重定向逻辑没有调用withInput()方法:Laravel不会默认将用户提交的表单数据闪存到Session中,必须手动调用withInput()才会把输入值存入单次有效Session,供跳转后的页面读取。
  • 其他可能的衍生原因:如果已调用该方法仍拿不到值,通常是路由未归属web中间件组(Session闪存依赖web中间件中的会话启动逻辑)、或是前端模板未使用old()辅助函数读取旧输入值。
修复步骤
  1. 首先修改验证失败后的重定向代码,补充withInput()调用:
if ($validator->fails()) {
    return redirect('admin/page/create')
                ->withErrors($validator)
                ->withInput(); // 新增这行,闪存所有表单输入值
}
  1. 前端表单模板对应位置使用old()方法读取旧值,你的场景是多语言数组格式的字段,参考写法:
{{-- 循环语言渲染输入框时的示例写法 --}}
@foreach($languages as $lang)
<input type="text" name="PageLanguage.title[{{ $lang->id }}]" value="{{ old('PageLanguage.title.'.$lang->id) }}">
@endforeach
  1. 额外校验:确认你的路由定义是在routes/web.php中,或是已经手动给路由加了web中间件,保证Session功能正常生效。

内容的提问来源于stack exchange,提问作者Mexdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:15:01