我们如何在 laravel 5.3 中对多维数组进行自定义验证
How can we do custom validation for multi dimensional array in laravel 5.3
我在 Laravel 5.3 中使用二维字段数组。我希望根据需要验证所有值并显示各个错误消息。
我在控制器函数中使用验证如下
$this->validate($request, [
'training_id' =>'required',
'survey_name' =>'required',
'question.*' =>'required',
'answer_option.*.*' =>'required'
],
['question.*.required' => 'The question field is required.',
'answer_option.*.*.required' => 'The answer field is required.']);
在视图页面中,当我尝试显示所有错误消息时,只有第一行的答案会被验证,而其他的不会。错误信息如
Array ( [0] => The question field is required. [1] => The question field is required. [2] => The answer_option.0.0 field is required. [3] => The answer_option.0.1 field is required. [4] => The answer_option.0.2 field is required. [5] => The answer_option.0.3 field is required. [6] => The training id field is required. [7] => The survey name field is required. )
要单独验证带有自定义错误消息的所有字段,手动创建验证器是最佳解决方案....
第 1 步:
use Validator; (after namespace of any controller where validation is needed)
第 2 步:
添加一个方法(假设方法名check_data())。并在下面的代码中放置....
public function check_data(Request $request){
//Rules for form fields
$rules = array(
'training_id' =>'required',
'survey_name' =>'required',
'question' =>'required',
'answer_option' =>'required'
);
//Custom message for individual fields
$messages = array(
'training_id.required' => 'Training Id should not be empty...',
'survey_name.required' => 'Survey Name is Essential...',
'question.required' => 'Question is urgent...',
'answer_option.required' => 'Answer option can be any one but required...'
);
$validator = Validator::make($request->all(), $rules, $messages);
//Check for validation
if ($validator->fails()) {
//if validation fails
return redirect()->back()->withInput()->withErrors($validator);
} else {
//Validation is successful and do as you wish
return "All data are validated !!";
}
}
希望它能奏效
我在 Laravel 5.3 中使用二维字段数组。我希望根据需要验证所有值并显示各个错误消息。 我在控制器函数中使用验证如下
$this->validate($request, [
'training_id' =>'required',
'survey_name' =>'required',
'question.*' =>'required',
'answer_option.*.*' =>'required'
],
['question.*.required' => 'The question field is required.',
'answer_option.*.*.required' => 'The answer field is required.']);
在视图页面中,当我尝试显示所有错误消息时,只有第一行的答案会被验证,而其他的不会。错误信息如
Array ( [0] => The question field is required. [1] => The question field is required. [2] => The answer_option.0.0 field is required. [3] => The answer_option.0.1 field is required. [4] => The answer_option.0.2 field is required. [5] => The answer_option.0.3 field is required. [6] => The training id field is required. [7] => The survey name field is required. )
要单独验证带有自定义错误消息的所有字段,手动创建验证器是最佳解决方案....
第 1 步:
use Validator; (after namespace of any controller where validation is needed)
第 2 步:
添加一个方法(假设方法名check_data())。并在下面的代码中放置....
public function check_data(Request $request){
//Rules for form fields
$rules = array(
'training_id' =>'required',
'survey_name' =>'required',
'question' =>'required',
'answer_option' =>'required'
);
//Custom message for individual fields
$messages = array(
'training_id.required' => 'Training Id should not be empty...',
'survey_name.required' => 'Survey Name is Essential...',
'question.required' => 'Question is urgent...',
'answer_option.required' => 'Answer option can be any one but required...'
);
$validator = Validator::make($request->all(), $rules, $messages);
//Check for validation
if ($validator->fails()) {
//if validation fails
return redirect()->back()->withInput()->withErrors($validator);
} else {
//Validation is successful and do as you wish
return "All data are validated !!";
}
}
希望它能奏效