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

Laravel 8.65 动态表单提交后验证错误与旧值在Blade不显示

我使用FormRequest进行数据校验,该问题已被多次提问,社区也提供了多种解决思路,但均未解决我的问题。

问题描述

我有一个复杂表单,部分HTML由JQuery代码动态生成。若表单未加载JQuery生成的内容,后端校验和旧值回显功能正常;但当表单包含JQuery生成的HTML并提交后,旧值和验证错误均无法正常显示,相关操作步骤如下:

步骤1:点击付款条款

步骤1

步骤2:选择条款并确认

步骤2

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

步骤3

相关代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:00