我正在使用Laravel 5.4,并且有一个填充了数据库问题的表单,每个问题都要求使用1到10的单选按钮进行“得分”。我需要容纳未知数量的问题,我需要验证以测试所有问题都选择了分数。所有单选按钮组都命名为q_,后跟question_id(例如q_1,q_2等)。我想这一切都可以手动完成,但是Laravel是一个如此强大的框架,我不得不认为这是一种“Laravel”方式。有人有什么建议吗?
答案 0 :(得分:0)
我建议你避免给它们带前缀的名字,并使用类似下面的内容创建一个实际的数组;
<input type="checkbox" name="question[{{ $question->id }}]" ...>
现在,您可以使用控制器方法;
$questions = $request->input('questions');
您的验证器规则可能如下所示;
$request->validate([
'questions.*' => ['required', 'string']
]);
Laravel允许您以多种方式验证数组check out the documentation。
答案 1 :(得分:0)
如果您真的想使用前缀,可以查看构建custom validation rule。但我同意ollieread,你应该把所有问题都作为数组元素来处理。为了扩展这个答案,这就是这些规则的样子:
$rules = [
'questions' => 'array',
'questions.*.text' => 'required_with:questions|string',
'questions.*.score' => 'required_with:questions|integer|min:1|max:10'
];
答案 2 :(得分:-1)
您可以使用php和laravel来处理这个问题。假设您使用数组中的查询获得所有问题ID。
$questionIds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
创建一个空数组来创建规则。
$validatedQuestionIds = [];
现在添加问题Ids的规则
foreach($questionIds as $key => $questionId){
$validatedQuestionIds = [
'q_'.$questionId = 'required|string';
];
}
现在使用laravel验证函数验证数组。
$request->validate($validatedQuestionIds);