php – Laravel 4验证 – 嵌套索引数组?

前端之家收集整理的这篇文章主要介绍了php – Laravel 4验证 – 嵌套索引数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有各种各样的东西…
$foo = [];
$foo['stuff']['item'][0]['title' => 'flying_lotus'];
$foo['stuff']['item'][1]['title' => 'varIoUs_cheeses'];
$foo['stuff']['item'][2]['title' => 'the_career_of_vanilla_ice'];
$foo['stuff']['item'][3]['title' => 'welsh_cats'];

如何使用Laravel 4中的Validator方法验证“标题”键?

这是我到目前为止

$validator = Validator::make($foo,['stuff.item.???.title' => 'required']);

我被索引的数组完全闪过.任何帮助都会很棒.

此时,Validator类并不意味着迭代数组数据.虽然它可以遍历一个嵌套的数组来找到一个特定的值,但它期望该值是一个(通常是字符串)的值.

我看到的方式,你有几个选择:

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)需要检查您的自定义函数中的所有数组的可能值(假设您将不仅仅具有要验证的标题).

您可以使用Validator::extend()创建验证方法,或通过在其他地方完全扩展该类.

3:扩展Validator类并替换/ parent相关规则以接受数组.

创建您自己的扩展验证器类,并实现自定义规则,或重命名现有规则,使这些规则可以接受数组值.这与#2自定义规则选项有一些类似的注意事项,但如果您打算经常验证迭代阵列,则可能是“最佳实践”.

原文链接:https://www.f2er.com/laravel/131872.html

猜你在找的Laravel相关文章