Laravel-验证索引数组

时间:2019-07-05 09:34:18

标签: php laravel validation

我有一个验证器,如下所示:

$validator = Validator::make($shipment, [
        'collection_date' => 'required|date',
        "parcels"    => "required|array|min:1",
        "parcels.*.items" => "required|array",
        "parcels.*.items.*.value" => "required"
    ]);

现在看一下,很容易看到地块应该是一个数组,每个地块都应该有一个属性items,并且应该是一个数组,并且每个项目都应该有一个属性{{1} }。

但是我得到的是,而不是有人像您期望的那样通过它,

value

他们像这样通过它:

[parcels:[{items:[{value:1}]}]]

只有一项时。验证程序失败了,正如我所希望的那样,但是消息很奇怪,因为它实际上是将[parcels:[{items:{value:1}}]]视为一个数组,即使它实际上是一个关联数组而不是一个项目列表。

因此,该消息显示了类似items的内容-我不记得确切内容了,我只知道它显然试图访问“值”,就好像它是“项”数组的成员一样(因为从技术上讲是这样!只是不是按照我想要的方式。)

我真正想要说的是类似error: parcels.0.items.values has no property value

2 个答案:

答案 0 :(得分:0)

想到的快速解决方案是为您的规则添加自定义错误消息:

    2019-07-05T09:42:45.679221+00:00 shinyapps[1012452]: [1] "/SFB-resultgallery"
2019-07-05T09:42:45.679636+00:00 shinyapps[1012452]: [1] "/SFB-resultgallery/Figures"
2019-07-05T09:42:45.679740+00:00 shinyapps[1012452]: [1] "/sfb-resultgallery/Figures/atg6-9_KD_in_brain"
2019-07-05T09:42:45.679936+00:00 shinyapps[1012452]: Warnung in dir.create(paste0("./static", j))
2019-07-05T09:42:45.679938+00:00 shinyapps[1012452]:   kann Verzeichnis './static/sfb-resultgallery/Figures/atg6-9_KD_in_brain' nicht erzeugen. Grund 'No such file or directory'

您可以在Laravel documentation中找到有关自定义错误消息的更多详细信息。

答案 1 :(得分:0)

使用自定义错误消息进行显示。您的代码就像

$validator = Validator::make($shipment, [
    'collection_date' => 'required|date',
    "parcels"    => "required|array|min:1",
    "parcels.*.items" => "required|array",
    "parcels.*.items.*.value" => "required"
],
[
    'parcels.*.items.array' => 'Your custom error msg which you want to display',
]);