代码之家  ›  专栏  ›  技术社区  ›  Pranav Mandlik

laravel中Ajax阵列的验证

  •  0
  • Pranav Mandlik  · 技术社区  · 6 年前

    我正在从表单发布帖子数据。我想在controller中验证该数组,并向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中的所有错误,下面是同一控制器中的验证器。

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

    即使使用空数组,验证也会通过每个测试

    1 回复  |  直到 6 年前
        1
  •  1
  •   Hiren Gohel PRASANNA KUMAR K G    6 年前

    删除代码,然后可以尝试使用此代码:

    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] .' ';
                }
            }
         }
    }
    

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

    希望这对你有帮助!!