首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZF2智能--如何验证json数据中的集合

ZF2智能--如何验证json数据中的集合
EN

Stack Overflow用户
提问于 2015-02-23 07:02:44
回答 1查看 2.1K关注 0票数 3

如何使用无标记性获得验证的json值。例如,在下面的json数据中,我需要在users集合下获得验证的users

代码语言:javascript
复制
{   
    "log_type": "split food",   
    "meal_type": "Break Fast",  
    "meal_date": "12-2-2015",   
    "users": [
        {
            "user_id": 1,
            "food_details": [
                {
                   "food_id":101
                }
            ]
        }
    ] 
}

我知道字段可以通过智能验证,但这里是来自json的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-24 08:33:03

您应该查看ZF2验证文档,以验证(表单)集合。有关这方面的一些文档可以在这里找到。。您应该像这样设置type字段:

代码语言:javascript
复制
'type' => 'Zend\InputFilter\CollectionInputFilter',

对于嵌套对象(或表单字段集)的验证,需要按以下方式设置type字段:

代码语言:javascript
复制
'type' => 'Zend\InputFilter\InputFilter'

你就这样用它:

代码语言:javascript
复制
'input_filter' => array(                
    'log_type' => array(
        'validators' => array(
            // ... validators ...
        ),
        'filters' => array(
            // ... filters ...
        ),
     ),
    'meal_type' => array(
        'validators' => array(
            // ... validators ...
        ),
        'filters' => array(
            // ... filters ...
        ),
     ),
     'meal_date' => array(
        'validators' => array(
            // ... validators ...
        ),
        'filters' => array(
            // ... filters ...
        ),
     ),
    'users' => array(
        'required' => true,
        'count' => ... optional count ...
        'input_filter' => ... input filter or input filter config to use for each element ...
        'type' => 'Zend\InputFilter\CollectionInputFilter',
    ),
    'some_complex_element' => array(
        'property_of_complex_element' => array(
            'name' => 'property_of_complex_element',
            'required' => false,
            'validators' => array(
                // ... validators ...
            ),
            'filters' => array(
                // ... filters ...
            ),
        ),
        'type' => 'Zend\InputFilter\InputFilter',
     )          
),

关于如何使用它的示例可以找到溢出

要实现你想要的目标,你很可能必须将这两种解决方案结合起来。不确定这是否是最简单的方法,但这是绝对有可能的!

编辑

对于还没有设置验证的人:

对于Apigility中的内容验证,您必须使用模块并按照文档进行配置。这个模块允许您在input_filter_spec中配置输入过滤器和验证器,就像通常在ZF2中进行表单验证一样。在这些input-filter配置数组中,您可以使用我前面提到的配置。

因此,首先正确安装该模块,一旦设置完毕,您将能够在Apigility中使用这些验证类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28668444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档