如何使用请求验证 JSON 输入? Laravel
How to Validate JSON Input using Requests? Laravel
我正在使用 formData 发送一些数据,对于一个字段(对象),我使用:JSON.stringify(this.allValues)
。
我尝试验证 this.allValues
中的所有值。
到目前为止,我尝试了 here 中的 2 种方法,现在我尝试使用 "JsonApiMiddleware" 中的第二种方法。
但是有了这个我验证(必需)错误,即使字段不为空。
public function rules()
{
$newValues = json_decode(request()->get('all_values')); // Here I have all values that needs to be validated
dd($newValues); // I post the respons for this below
$newValues = [
'saleforce_id' => 'required',
'customer_id' => 'required',
]
return $newValues;
}
""customer_id":49,"saleforce_id":"","lkp_invoicing_method_id":3,"lkp_product_category_id":10,"lkp_notice_period_id":5,"lkp_licence_term_id":9,"is_attrition_risk":false,"is_additional_users":false,"contract_value_exc_vat_annual":"257590...and many more
将您发送的 JSON 对象视为 php 关联数组。例如,假设您发送的数据如下所示。
/* var allValues = */
{
data: {
requiredField1: value,
requiredField2: value,
requiredArrayField1: [
1,
2,
3,
],
optionalField1: value
}
}
然后,您可以像这样验证数据:
public function rules()
{
return: [
'data' => 'required|array',
'data.requiredField1' => 'required',
'data.requiredField2' => 'required',
'data.requiredArrayField1' => 'required|array',
'data.requiredArrayField1.*' => 'required|numeric',
'data.optionalField1' => 'nullable',
];
}
我找到了解决办法。
我使用了 laracast 中的方法,fureszpeter,带有中间件的方法,并对其进行了编辑。
public function handle($request, Closure $next)
{
if ($request->has('all_values')) {
$request->merge([
'all_values' => json_decode($request->get('all_values'), true)
]);
} // only when I have all_values in my request
return $next($request);
}
}
在我现有的请求中:
public function rules()
{
$newValues = [
'all_values.saleforce_id' => 'required'
'all_values.customer_id' => 'required',
// and the rest of the files
]
return $newValues
}
我正在使用 formData 发送一些数据,对于一个字段(对象),我使用:JSON.stringify(this.allValues)
。
我尝试验证 this.allValues
中的所有值。
到目前为止,我尝试了 here 中的 2 种方法,现在我尝试使用 "JsonApiMiddleware" 中的第二种方法。
但是有了这个我验证(必需)错误,即使字段不为空。
public function rules()
{
$newValues = json_decode(request()->get('all_values')); // Here I have all values that needs to be validated
dd($newValues); // I post the respons for this below
$newValues = [
'saleforce_id' => 'required',
'customer_id' => 'required',
]
return $newValues;
}
""customer_id":49,"saleforce_id":"","lkp_invoicing_method_id":3,"lkp_product_category_id":10,"lkp_notice_period_id":5,"lkp_licence_term_id":9,"is_attrition_risk":false,"is_additional_users":false,"contract_value_exc_vat_annual":"257590...and many more
将您发送的 JSON 对象视为 php 关联数组。例如,假设您发送的数据如下所示。
/* var allValues = */
{
data: {
requiredField1: value,
requiredField2: value,
requiredArrayField1: [
1,
2,
3,
],
optionalField1: value
}
}
然后,您可以像这样验证数据:
public function rules()
{
return: [
'data' => 'required|array',
'data.requiredField1' => 'required',
'data.requiredField2' => 'required',
'data.requiredArrayField1' => 'required|array',
'data.requiredArrayField1.*' => 'required|numeric',
'data.optionalField1' => 'nullable',
];
}
我找到了解决办法。 我使用了 laracast 中的方法,fureszpeter,带有中间件的方法,并对其进行了编辑。
public function handle($request, Closure $next)
{
if ($request->has('all_values')) {
$request->merge([
'all_values' => json_decode($request->get('all_values'), true)
]);
} // only when I have all_values in my request
return $next($request);
}
}
在我现有的请求中:
public function rules()
{
$newValues = [
'all_values.saleforce_id' => 'required'
'all_values.customer_id' => 'required',
// and the rest of the files
]
return $newValues
}