以下的答案为Laravel < = 5.1。 Laravel 5.2引入built-in array validation。
此时,确认类不意味着迭代阵列数据。虽然它可以遍历嵌套数组以查找特定值,但它期望该值为单个值(通常为string
)的值。
我看到它的方式,你有几种选择:
1:创建一个字段名数组键的规则。
基本上基本上你在做什么,除非你需要弄清楚你的['stuff']['item']
数组有多少个值。我做这样的事了良好的效果:
$data = [
'stuff' => [
'item' => [
['title' => 'flying_lotus'],
['title' => 'various_cheeses'],
['title' => ''],
['title' => 'welsh_cats'],
]
]
];
$rules = [];
for ($i = 0, $c = count($data['stuff']['item']); $i < $c; $i++)
{
$rules["stuff.item.{$i}.title"] = 'required';
}
$v = Validator::make($data, $rules);
var_dump($v->passes());
2:创建一个自定义的验证方法。
这将允许你创建你自己的规则,在那里你可以期待一个数组值和迭代过来是必要的。
此方法有其注意事项,因为A)您不会有特定的值错误消息,因为它会针对整个阵列发生错误(例如,如果您传递stuff.item
作为检查值),并且B)你需要在你的自定义函数中检查你阵列中所有可能的值(我假设你不仅仅需要title
来验证)。
您可以通过使用Validator::extend()
或其他地方完全扩展类创建验证方法。
3:扩展验证类和替换/母体中的规则问题接受阵列。
创建您自己的扩展验证程序类,并实现自定义规则或重命名现有规则,从而使这些规则在出现问题时接受数组值。这对#2自定义规则选项有一些类似的警告,但如果您打算经常验证迭代数组,则可能是“最佳做法”。
林奄奄一息看到这个答案:)我一直是doi通过执行foreach,然后将结果存储在另一个数组中,然后检查该数组是否存在错误,并显示 – KyleK