序列化表单验证 Laravel 8
Posted
技术标签:
【中文标题】序列化表单验证 Laravel 8【英文标题】:Serialize form validation 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' ] 这是一个数组 【参考方案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 外观为您创建一个验证器实例。而已。您必须自己执行验证并实现错误处理。
【讨论】:
以上是关于序列化表单验证 Laravel 8的主要内容,如果未能解决你的问题,请参考以下文章