首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8.65验证错误消息和未显示在Blade文件中的旧值

Laravel 8.65验证错误消息和未显示在Blade文件中的旧值
EN

Stack Overflow用户
提问于 2021-11-18 08:08:13
回答 1查看 1.5K关注 0票数 3

我正在使用FormRequest来验证数据。我知道这个问题问了很多次,社会人士也曾尝试用很多方法解决这个问题,但没有一个解决了我的问题。参考链接附呈。

我的问题描述

我已经完成了复杂的表单,其中一些HTML是从我的JQuery代码中生成的。当Jquery代码不填充表单时,后端验证和旧值可以正常工作,但是当表单中出现JQuery并提交表单时,旧值和验证错误不起作用。图像是附加的,以更多的解释。

步骤1单击支付条件

步骤2狭缝项和确认

步骤3在从JQuery填充的支付百分比输入字段中添加值。

FormRequest

代码语言:javascript
复制
class AbcRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'payment_term' => ['required'],
            'payment_percent' => ['required'],
            'other_info' => ['required'],
        ];
    }
}

web.php

代码语言:javascript
复制
Route::group(['middleware' => ['auth', 'approved']], function () {
    Route::post('/abc/store', 'AbcController@store')
        ->name('abc.store');
});

叶片

代码语言:javascript
复制
<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>

我到目前为止尝试过的

社区链接

  1. Laravel Validation MessageBag contains errors however not showing up in blade file
  2. Laravel 5 validate error message not showing
  3. Laravel 8 - Old inputs and validation error messages are not working
  4. https://github.com/laravel/framework/issues/26367
  5. https://laravel.io/forum/why-laravel-validation-dont-displaying-errors
  6. https://laracasts.com/discuss/channels/laravel/error-messages-are-not-shown-after-validation
  7. Laravel 5.2 validation errors not appearing

控制器的代码来自社区

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-24 21:16:48

免责声明:如果我没有正确理解你的问题,我很抱歉,我尽力了。

如果在客户端使用jQuery创建一些HTML输入,Laravel将无法将任何旧的输入值或验证错误插入到HTML中,因为在‘re服务器上呈现时您所引用的DOM元素根本不存在。

本质上,我可以想出两种解决这个问题的方法:让Laravel呈现那些HTML元素并使用CSS隐藏它们。那么你们的JavaScript可以(有条件地?)通过操作CSS显示以前隐藏的元素。另一种选择是在内联脚本标记中模板旧的输入值和验证错误,这些JavaScript变量可以由jQuery代码解析,例如在JSON中对这些值进行编码和解码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70016413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档