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

我有一个这样的表单数据

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

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

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

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

【问题讨论】:

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

标签: php laravel validation


【解决方案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',

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

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多