加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 19:41:43 所属栏目:大数据 来源:网络整理
导读:我有各种各样的东西… $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' = 'wel
我有各种各样的东西…
$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自定义规则选项有一些类似的注意事项,但如果您打算经常验证迭代阵列,则可能是“最佳实践”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读