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

Posted

技术标签:

【中文标题】如何验证嵌套数组并在 laravel 中显示消息【英文标题】:how to validate nested array and show message in laravel 【发布时间】:2017-10-28 10:14:54 【问题描述】:

我有一个这样的表单数据

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

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

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

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

【问题讨论】:

可以在表单提交后添加 dd($request->all()) 的详细信息吗? @Sagar 看看。 在上述情况下,第一种情况很好,但第二种情况不对吗? 在您的刀片文件中,您是静态还是动态创建了输入字段? 是的,第一个问题很好。一切都是动态创建的。 【参考方案1】:

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

像这样让你的内部数组“答案”。

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',

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

【讨论】:

以上是关于如何验证嵌套数组并在 laravel 中显示消息的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs如何显示laravel输入数组验证错误

在 Laravel 的 ajax 中显示多个输入数组验证

在 Laravel 中验证数组时,如何使用数组项规则添加验证自定义消息?

Vuejs Laravel 验证输入数组

如何自定义 laravel 数组验证错误键和消息

验证数组中的 Laravel 嵌套规则