Laravel 8.65 动态表单提交后验证错误与旧值在Blade不显示
我使用FormRequest进行数据校验,该问题已被多次提问,社区也提供了多种解决思路,但均未解决我的问题。
问题描述
我有一个复杂表单,部分HTML由JQuery代码动态生成。若表单未加载JQuery生成的内容,后端校验和旧值回显功能正常;但当表单包含JQuery生成的HTML并提交后,旧值和验证错误均无法正常显示,相关操作步骤如下:
步骤1:点击付款条款

步骤2:选择条款并确认

步骤3:在JQuery生成的付款百分比输入框中填写数值

相关代码
FormRequest校验规则
class AbcRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'payment_term' => ['required'], 'payment_percent' => ['required'], 'other_info' => ['required'], ]; } }
路由配置(web.php)
Route::group(['middleware' => ['auth', 'approved']], function () { Route::post('/abc/store', 'AbcController@store') ->name('abc.store'); });
Blade模板代码
<form method="post" action="{{ url('/abc/store') }}" enctype="multipart/form-data"> @csrf <input type="text" name="payment_term" class="form-control" value="{{ old('payment_term') }}"> @error('payment_term') <div class="backend-error"> {{ $message }} </div> @enderror </form>
已尝试的方案
我已经查阅了社区多个同类问题的解决方案,包括手动在控制器内做校验后重定向回传错误和输入值的方案,代码如下:
public function store(Request $request) { $validator = Validator::make($request->all(), [ 'payment_term' => ['required'], 'payment_percent' => ['required'], 'other_info' => ['required'], ]); if ($validator->fails()): return redirect()->back() ->withErrors($validator) ->withInput(); endif; }
上述方案均未解决当前问题。
内容的提问来源于stack exchange,提问作者msayubi76
相关产品推荐
相关产品推荐

