如何在laravel中验证嵌套数组和显示消息

时间:2017-05-27 17:36:10

标签: php laravel validation

我有这样的表单数据

enter image description here

我想要实现的是,每个question必须是一个answer correct字段。验证如下:

$this->validate($request, [
    'questions.*.answers.*.correct' => 'required',
    ...
]);

但是此验证要求必须将所有answer字段标记为正确。

所以,我的第一个问题是如何验证此数组以检查每个问题是否都有正确答案?
第二个是,如果验证失败,我如何显示哪个问题没有正确答案?是否有任何像:index这样的通配符或者我的验证消息中使用的东西?

1 个答案:

答案 0 :(得分:0)

我不知道您是如何创建表单的,但您可以制作以下可能对您有帮助的结构。

让你的内部数组'回答'就像这样。

answers[
    'value1' => Answer 1,
    'value2' => Answer 2,
    'value3' => Answer 3,
    'value4' => Answer 4,
]

假设正确的答案是ans4然后,像这样制作数组:

answers[
    'value1' => Answer 1,
    'value2' => Answer 2,
    'value3' => Answer 3,
    'value4' => Answer 4,
    'correct' => 'value4'
]

现在您可以定义如下验证:

'questions.*.answers.value1' => 'required',
'questions.*.answers.value2' => 'required',
'questions.*.answers.value3' => 'required',
'questions.*.answers.value4' => 'required',
'questions.*.answers.correct' => 'required',

现在,您可以为上述值生成自定义错误消息。 希望,这可能对你有帮助。