【问题标题】:Serialize form validation Laravel 8序列化表单验证 Laravel 8
【发布时间】:2021-12-13 01:32:04
【问题描述】:

无法验证 laravel 8 中的输入数组。我从前端获得了可从后端成功访问的序列化表单数据。

public function GetForm(Request $request)
{
        $request = $request->all();
        $input =  array();
        parse_str($request['data'], $input);

        return $input;
}

output:
  {
    "inputID":"26",
    "inputName":"Julie Hughes est",
    "inputPhone":"+94111222333",
    "inputEmail":"testmail@gmail.com"
  }

我想要的是在用户更改时更新数据之前验证更新函数中的表单。


    public function update(Request $request)
    {
        if (request()->ajax()) {
           $request = $this->GetForm($request);
            $object = User::find($request['inputID']);
            $object->name = $request['inputName'];
            $object->phone = $request['inputPhone'];
            $object->email = $request['inputEmail'];
            $object->save();

            return response()->json([ 
                "message" => "User Information has been updated"
            ], 200);
        }
    }

我对验证功能的尝试如下

public function GetForm(Request $request)
    {
        $request = $request->all();
        $input =  array();
        parse_str($request['data'], $input);

        return $this->validate(
            $input, // Expected type 'Illuminate\Http\Request'. Found'array'.intelephense(1006)
            [
                'inputID' => ['required'],
                'inputName' => ['required', 'string', 'max:255'],
                'inputPhone' => ['required', 'string', 'email'],
                'inputEmail' => ['required', 'min:9', 'number'],
            ],
        );
    }

寻找解决此问题的建议。


      $('#updateBtn').click(function() {
            console.log('update triggered')
            axios.get('/users/update/', {
                    params: {
                        data: $("#updateForm").serialize()
                    }
                })
                .then(function(response) {
                    let i = response.data
                    console.log(i);
                    userTable.ajax.reload();
                    $('#editModel').modal('hide')
                    window.toastr.success(i.message);

                }).catch(function(error) {
                    console.log(error)
                })
        })

【问题讨论】:

  • inputId,inputName,这些都是数组吗?还是只是一个普通的形式?
  • 您是否尝试使用 ajax 验证?
  • @AsfandyarKhan 是的,尝试使用 ajax
  • 你也可以分享你的ajax代码吗?
  • @AsfandyarKhan [ 'inputID' , 'inputName' , 'inputPhone' , 'inputEmail' ] 这是一个数组

标签: php laravel laravel-8 laravel-7 laravel-6


【解决方案1】:

尝试这样的验证。

public function getForm(Request $request)
{
    $inputs = $request->all();
    $validator = Validator::make($inputs, [
        'inputID' => 'required',
        // other validations
    ]);

    if ($validator->passes()) {

        return response()->json(['message'=>'User Information has been updated.']);
        
    }

    return response()->json(['error'=>$validator->errors()]);
}

Validator::make 使用 Validator 外观为您创建一个验证器实例。而已。您必须自己执行验证并实现错误处理。

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2021-02-07
    • 2021-08-14
    • 1970-01-01
    • 2023-03-12
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多