在“422(无法处理的实体)”Laravel 7 中验证错误时出现错误

Posted

技术标签:

【中文标题】在“422(无法处理的实体)”Laravel 7 中验证错误时出现错误【英文标题】:Getting error when validation error in “422 (Unprocessable Entity)” Laravel7 【发布时间】:2021-02-17 20:37:00 【问题描述】:

我正在使用 laravel 7 。当我输入成功添加到数据库的所有数据时。但是如果任何字段为空,则会出现错误““422(无法处理的实体)”Laravel7”

如果出现任何 laravel 验证错误,那么我想显示到相应的字段错误中。 但我没有获得价值

error: function (data) 
   console.log("data");
      console.log('Error:', data);
      $('#btn-save').html('Save Changes');

下面是我的编码部分

  if ($("#productForm").length > 0) 
            $("#productForm").validate(
  
                submitHandler: function(form)
                 
  
                      var actionType = $('#btn-save').val();
                      $('#btn-save').html('Sending..');
                       
                     $.ajax(
                              data: $('#productForm').serialize(),
                              
                              url:"contact-list/store",
                              type: "POST",
                              dataType: 'json',
                              success: function (data) 
                                console.log("dgfd");
                              $('#productForm').trigger("reset");
                              $('#user_table').DataTable().ajax.reload();
                              $('#ajax-product-modal').modal('hide');
                              $('#btn-save').html('Save Changes');
                              var oTable = $('#laravel_datatable').dataTable();
                              oTable.fnDraw(false);
               
                              ,
                              error: function (data) 
                                console.log("data");
                                  console.log('Error:', data);
                                  $('#btn-save').html('Save Changes');
                              
                            );
                    
            )
        

我的控制器:

    public function store(Request $request)
    
        $validate = $request->validate([
                        'name' => 'required',
                        'email' => 'email',
                        'phone' => 'digits:10',
                        'address' => 'required',
                        'country' => 'required',
                        'state' => 'required',
                        // 'comment' => 'required',
                        'organization' => 'required',
                        'captcha' => 'required|captcha'
                    ],
                    [
                        'captcha.captcha' => 'Incorrect Captcha'
                    ]
                );

        // if ($validate->fails())
        // 
        //     return response()->json(['errors'=>$validate->errors()->all()]);
        // 

        $id=$request->contact_id;

        $customer = CustomerContact::find($id);
        $customer->name = $request->name;
        $customer->email = $request->email;
        $customer->phone = $request->phone;
        $customer->address = $request->address;
        $customer->country_id = $request->country;
        $customer->state_id = $request->state;
        $customer->comment = $request->comment;
        $customer->organization = $request->organization;
        $customer->captcha = $request->captcha;

 
        $a=$customer->update();
        return Response::json($a);

    

Nd modal 
 
    <div class="modal fade" id="ajax-product-modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
    <div class="modal-header">
        <h4 class="modal-title" id="productCrudModal"></h4>
    </div>
    <div class="modal-body">
        
        <form id="productForm" name="productForm" class="form-horizontal">
           
            @csrf
             <div class="form-header">
                <h4>Edit Employee Information</h4>
             </div>

            <div class="form-group">
                <label class="required">Your Name</label>
                <input type="hidden" name="contact_id" id="contact_id">
                <input type="text" placeholder="Your Name" class="form-control" name="name" id="name">
                    <span class="error_message"></span>
            </div>

            <div class="form-group">
                <label>Email Id</label>
                <input type="text" placeholder="Email Id" class="form-control" name="email" id="email">
                    <span class="error_message"></span>
            </div>
   </div>
  </div>
  </div>

我不知道如何在模态结构中显示错误。如果有人有想法,请帮助我。

【问题讨论】:

ajax 验证将帮助您做到这一点itsolutionstuff.com/post/… 有很多方法可以在前端检查验证,html 有一个 required 属性可以做到这一点:&lt;input type="text" name="name" required&gt; 【参考方案1】:

尝试取消注释:

// if ($validate->fails())
    // 
    //     return response()->json(['errors'=>$validate->errors()->all()]);
    // 

此代码以 json 格式返回错误并让您轻松打印它们

在 jquery 中尝试记录 data.response,因为错误返回许多对象,如状态代码和其他内容

【讨论】:

其实我也用过,但是遇到了同样的问题。 试试这个:error: function(xhr, status, error) console.log(xhr.responseText);

以上是关于在“422(无法处理的实体)”Laravel 7 中验证错误时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

PayPal Orders v2 在传递金额折扣时创建返回 422(无法处理的实体)

Rails API 422 无法处理的实体:没有可用的验证密钥,heroku

Paypal 创建支付令牌 API 返回 422 无法处理的实体

如何反序列化 422 无法处理的实体错误模型并将错误绑定到 asp.net core razor pages 模型状态

无法将附件传递给控制器​​:422 Unprocessable Entity

无效 POST 参数的错误代码