【问题标题】:Validation for Ajax array in laravel在 laravel 中验证 Ajax 数组
【发布时间】:2018-03-16 08:50:41
【问题描述】:

我正在发布表单中的帖子数据。我想在控制器中验证该数组并向 ajax 调用发送一个 json 响应。你能帮我解决一下吗?

这是我提交表单的控制器功能代码。

public function submit()
{

    $data=array(
        'user_firstname'=>$_POST['user_firstname'],
        'user_lastname'=>$_POST['user_lastname'],
        'user_phone'=>$_POST['user_phone'],
        'email'=>$_POST['user_email'],
        'username'=>$_POST['user_username'],
        'password'=>$_POST['user_password'],

    );
     $validation=validator($_POST);
    if($validation->passes()){

      return "Validation passes";

    }
    else{
        return "Validation failed";
    }
}

 protected function validator(array $data)
{
    return Validator::make($data, [
        'user_firstname' => 'required|string|max:255',
        'user_lastname' => 'required|string|max:255',
        'user_phone' => 'required|string|max:15|unique:users',
        'email' => 'required|string|email|max:255|unique:users',
        'username' => 'required|string|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',
    ]);
}

这是我的 javascript 函数。

 if(currentTab==2)
{

$.ajax({
      url: "register", 
      type: "post",
      headers: {
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      },
      data: {'user_firstname':user_firstname,'user_lastname':user_lastname,'user_phone':user_phone,'user_email':user_email,'user_username':user_username,'user_password':user_password},
      success: function(result){
         console.log(result);
        }
    });

}

我想验证数组并返回 json 中的所有错误,以下是我在同一个控制器中的验证器。

如果有其他方法可以验证数据,请建议我

验证通过每个测试,即使是空数组

【问题讨论】:

  • 将此代码放在else部分:$error = true; $responsecode = 400; $result["error_message"] = ""; if (sizeof($validator->errors()->getMessages()) > 0){ $messages = $validator->errors()->getMessages(); foreach ($messages as $key => $value) { $result["error_message"] .= $value[0] .' '; } }
  • 我不知道是什么问题,但它通过了所有验证测试
  • 首先,您要打印所有错误还是其他内容?
  • 是的,我想打印错误
  • 然后阅读我的第一条评论!我已经给了它的代码!如果您不明白,请告诉我。

标签: ajax laravel laravel-5 laravel-5.2 laravel-5.3


【解决方案1】:

删除您的代码,您可以尝试使用此代码:

public function submit(Request $request)
{
   $error = false; 
   $result = array();
   $responsecode = 200;

   $validator = Validator::make($request, [
            'user_firstname' => 'required|string|max:255',
            'user_lastname' => 'required|string|max:255',
            'user_phone' => 'required|string|max:15|unique:users',
            'email' => 'required|email|unique:users,email',
            'username' => 'required|string|max:255|unique:users,username',
            'password' => 'required|string|min:6|confirmed',
   ]);

   if (!empty($request) && !($validator)){
        try {
            $result = 'Validate!!';     //OR do more your stuff here
        }
        catch(\Exception $e){
            $error = true;
            $responsecode = 500; 
            $result["error_message"] = $e->getMessage();
        }
    } else {
        $error = true;
        $responsecode = 400;
        $result["error_message"] = "";
        if (sizeof($validator->errors()->getMessages()) > 0){
            $messages = $validator->errors()->getMessages();
            foreach ($messages as $key => $value) {
                 $result["error_message"] .= $value[0] .' ';
            }
        }
     }
}

我每次都用这种格式,试试看。

希望对你有帮助!!

【讨论】:

  • 非常感谢人像魅力一样工作,非常感谢你救了我的工作
  • 很高兴,它有帮助!! :) 这是用于保存数据的代码格式/结构以及用于每个响应代码的 api!
猜你喜欢
  • 2015-05-05
  • 1970-01-01
  • 2016-10-12
  • 2019-02-21
  • 2018-01-03
  • 1970-01-01
  • 2016-08-05
  • 2019-01-14
  • 2016-01-20
相关资源
最近更新 更多