ZF2 apigility - 我们如何验证 json 数据中的集合

2023-12-06

如何使用 Apigility 获取经过验证的 json 值。例如,我需要验证user_id under users集合在以下json数据中。

{   
    "log_type": "split food",   
    "meal_type": "Break Fast",  
    "meal_date": "12-2-2015",   
    "users": [
        {
            "user_id": 1,
            "food_details": [
                {
                   "food_id":101
                }
            ]
        }
    ] 
}

我知道字段可以通过 apigility 进行验证,但这里来自 json。

谢谢


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

'type' => 'Zend\InputFilter\CollectionInputFilter',

为了验证嵌套对象(或表单字段集),您需要设置type字段如下:

'type' => 'Zend\InputFilter\InputFilter'

你像这样使用它:

'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',
     )          
),

可以找到有关如何使用它的示例在堆栈上overflow

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

EDIT

对于尚未设置验证的人:

用于内容验证Apigility你必须使用zfcampus/zf-content-validation module并按照文档进行配置。该模块允许您配置输入过滤器和验证器input_filter_spec就像您通常在 ZF2 中进行表单验证一样。在这些里面input-filter配置数组,您可以使用我上面引用的配置。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZF2 apigility - 我们如何验证 json 数据中的集合 的相关文章

  • 会话变量从 while 循环发送特定变量

    我有这个简单的while 循环它从 mysql 查询中检索数据并在我的主页上显示几个链接 我想避免使用 php get 函数并将查询字符串添加到我的网址中 我正在考虑使用会话变量 但我需要帮助 而且我很确定这是无法完成的 当访问者单击 wh
  • Laravel 模型访问器从缓存中获取 - 性能增强

    我在数据库中有一个项目列表 每个项目都可以选择被否决或赞成 这些投票与其他项目字段一起存储在 MySql 中 例如这样的事情 Schema create items function table table gt increments id
  • Magento 信用卡号与信用卡类型不匹配异常

    我正在使用 magento api 并且在创建订单时遇到了一些问题 我已经能够完成创建订单的所有工作 使其能够正常工作 我看到的问题是 当我调用创建订单的方法时 我总是遇到异常 Credit card number mismatch wit
  • Cakephp 在 Bluehost 上安装

    如何设置 Cakephp 才能在 Bluehost 上正常工作 我应该将我的应用程序 cake 和供应商文件夹以及 htaccess 和 index php 文件放在 public html 目录中吗 我按照这里的说明进行操作 http b
  • 文件再次获取内容不起作用替代方案

    我尝试了curl 因为file get contents在php中不起作用 任何人都可以给我解决方案 所以使用curl解决它 这里是代码 userData json decode file get contents https graph
  • PHP如何找到Web服务器的临时路径?

    当您处理 HTTP 上传时 文件将上传到 FILES field name tmp name 我知道我可以从那里提取临时路径 但我期待着也许 SERVER具有临时路径 没有 或其他优雅的方式来了解它的参数 有没有 ini get uploa
  • Laravel 4,如何在 Route::controller() 上应用过滤器

    我知道我能做到 Route get foo bar array before gt filter uses gt Controller bar 应用路由一些过滤器 我也知道 Route group 方法 无论如何 如果我想以这种方式定义一个
  • 如何使用第三方 JS 组件进行 Angular2/4 验证

    当谈到 Angular 2 验证时 我看到了不同的方法 基本方法是使用 HTML5 和模板 模型绑定或带有指定验证器的表单 然而 当涉及到特殊规则时 它需要大量编码 并且模板绑定 因此没有表单 通常会导致验证分散在 HTML 和 TS 代码
  • 如何使 WooCommerce 3.0 Single Image Gallery 像 2.x 版本一样?

    如果您更新到 WooCommerce 3 0 并且您的主题尚未更新 如何使 WooCommerce 3 0 单一产品图片库像以前的版本一样工作 对于不复制模板文件并使用条件 挂钩和过滤器进行修改以避免许多问题的主题来说 这是一个问题 要添加
  • 多个提交按钮

    我在 HTML 和 PHP 中遇到多个提交按钮时遇到问题 我尝试为基于 Web 的计算器编写 GUI 代码 这确实很容易 但是 php 中的函数并不那么容易 所以我有这个简单的 GUI 有 6 个提交按钮
  • PHP:使用 DateTime 类转换日期

    我从 PayPal IPN 获得了此日期 payment date 20 12 59 Jan 13 2009 PST 我如何转换Y m d TH i s Z 我确实尝试过 date new DateTime POST payment dat
  • 使用PHP将图像旋转45度时如何避免黑色背景?

    您好 我必须先翻转缩略图 然后才能将其与另一个 jpeg 文件合并 但是当我使用 php ini 旋转 45 度时它显示黑色背景 我怎样才能避免这种情况 任何机构都可以帮助我 好吧 如果您要生成 jpg 请使用 PHP GD 将背景颜色设置
  • 带有 ajax 提交处理程序的 jquery 验证插件不起作用

    在过去的几天里 我已经多次使用了 jquery 验证插件 但尚未将其与 ajax 提交一起使用 我所拥有的在下面被削减为两个字段 提交时值没有错误 单击提交按钮时不会发生任何提交 它只是什么都不做 HTML
  • PHP:CURL 可以遵循元重定向吗

    CURL 可以使用 CURLOPT FOLLOWLOCATION 遵循标头重定向 但是否可以遵循元刷新重定向 Thanks 是的 但您必须自己解析响应并查找类似以下内容 Obeying 刷新请求是浏览器端的事情 使用DOM解析来查找cURL
  • 如何统计List中某个元素出现的次数

    我有一个ArrayList Java的Collection类 如下 ArrayList
  • CakePHP:无法访问 MySQL 数据库

    我是 CakePHP 的新手 刚刚完成配置过程 但很困惑为什么 Cake 无法访问我的 MySQL 数据库 Cake 信息页面显示我的 tmp 目录是可写的 FileEngine 正在用于缓存 不知道这意味着什么 并且我的数据库配置文件存在
  • 使用PHP将大文件上传到谷歌云存储

    我正在尝试将大文件从服务器上传到云存储 文件超过 500mb 但 PHP 超时 我尝试查看 Google 客户端库文档 并在 stackoverflow 中进行爬行 但找不到任何可以帮助我的内容 还有有什么办法可以跟踪上传进度吗 这是我目前
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB
  • print_r 的替代方案(仅显示最多 2 3 个键)

    我有一个multi dimensional array有 200 个键 每个键有 3 到 5 个数组 我想知道有什么方法可以只看到有限的部分 即最多 3 或 4 个键 因为如果我使用print r desiredArray 然后花费了太多时
  • 从 HashMap 中查找对象键

    我有一个 HashMap 其键作为我自己的对象 键作为 String 的 ArrayList 有没有一种方法可以从映射中获取与另一个对象相同的关键对象 而无需迭代映射 请注意 我的对象已经实现了 equals 和 hashcode 并且它只

随机推荐

  • Android 阿拉伯语文本对齐

    我使用的课程来自Android 如何支持阿拉伯文字 显示阿拉伯语文本 在 Android 2 1 2 3 中 文本位于左侧 因此我使用 android gravity right 但在 Android 3 0 中 阿拉伯文本会自动在右侧对齐
  • R:确定每个日期间隔是否与数据框中的所有其他日期间隔重叠

    对于数据框中的每个日期间隔行 我想确定它是否与所有其他日期间隔重叠 排除它本身 具有开始日期和结束日期的数据框 表示时间间隔 data lt read table header TRUE text start date end date 2
  • 网页和 Chrome 扩展的 localStorage 不同

    我正在尝试访问localStorage我的 chrome 扩展中的对象background js文件 这localStorage常规网页上的对象向我显示来自不同网页的项目 包括我感兴趣的项目 但我访问的项目background js or
  • 警告 - 无法获取ImportedKeys 游标之前已被释放并且不可用

    我在一个相当大的 Informix 12 10 模式上运行 SchemaSpy v6 1 0 SNAPSHOT 并且收到错误 警告 无法 getImportedKeys 游标之前已被释放且不可用 我对 Java 一无所知 但我注意到 Liq
  • 用于将 json 模式转换为示例 JSON 的 C# 库

    我正在寻找一个 C 库 它将根据给定的 JSON 架构生成有效的 JSON 对象 我想生成一个非常简单的 JSON 示例 就像如何Swagger可以 我见过一些 JavaScript 库 比如JSON 模式伪造者 但我需要一个 C Net
  • 使用 Google-Maps-for-Rails 添加标记

    我正在玩https github com apneadiving Google Maps for Rails和 我想清除地图上的所有标记 并在用户在地图上单击的位置添加一个新标记 我在页面中添加了以下代码 通过这种方式 我可以看到带有纬度和
  • scikit-learn 如何处理多个 n_jobs 参数?

    我在 scikit learn 中创建了一个管道 如下所示 estimators2 tfidf TfidfVectorizer tokenizer lambda string string split clf SGDClassifier n
  • Amqmdnet - 打开/关闭每条消息的队列是否高效?

    我们有一些代码将消息发送到队列 它使用 amqmdnet dll 版本 8 0 0 6 队列管理器 Queuemanager 在应用程序启动时实例化一次并在整个应用程序中使用 发送消息时 会创建一个队列对象 然后将其关闭 我们应该为每条消息
  • 猫鼬嵌套文档

    我在猫鼬中设置了 2 个模式 var Job new mongoose Schema title String budget Number var JobModel mongoose model Job Job var Customer n
  • Xcode 8.2.1+ 构建失败:位码签名无效

    因此 将 Xcode 从 8 2 1 更新到任何新版本后 我无法构建 运行我的项目 这是我收到的错误 Ld Smash Anarchy build Deployment iphoneos Smash Anarchy build Object
  • Angular 6 PWA 与 Node 不工作

    I have a Angular 6 app that works and registers the SW when served with http server port 8080 command as you can see her
  • fopen() 是否受文件系统限制?

    我编写了一个程序来生成大型 SQL 文件 以便快速填充非常大的数据库 我用 PHP 编写了脚本 当我开始编码时我正在使用fopen and fwrite 当文件变得太大时 程序会将控制权返回给 shell 并且文件将不完整 不幸的是 我不确
  • 阻止程序执行,直到用户单击按钮

    我正在尝试制作一个类似于的模式对话框Swing s JOptionPane 我想呈现一个确认对话框 让用户在我在代码中执行某些操作之前明确地说 是 我无耻地从以下地方偷了这个例子 https gist github com jewelsea
  • MVC 现在是编写 PHP 的唯一方法吗? [关闭]

    Closed 这个问题是无关 目前不接受答案 现在 大量可用于 PHP 的框架都使用 MVC 甚至 ASP net 也有自己的 MVC 模块 我可以看到 MVC 的吸引力 我真的可以并且经常使用它 我看到的唯一缺点是您必须启动整个系统才能执
  • 求和日期范围而不计算mysql中的重叠

    我有一个简单的桌子start date and end date其中的列 这些日期值可能会重叠 id start date end date 1 2011 01 01 2012 04 01 2 2012 05 01 2013 10 01 3
  • 使用 stdin 和 stdout 使用 Java 与外部 C 程序进行通信

    我想做的是在 Java 应用程序中启动 C 程序可执行文件 并允许它们使用 stdin 和 stdout 相互通信 C 程序将等待来自 java 应用程序的命令并回显它 我已经用 gnugo mode gtp 测试了java代码 gnugo
  • java字符串文字可以被垃圾收集吗?如果是,如何证明?

    可以java吗字符串文字 like abc 被垃圾收集 如果是 我们怎样才能以编程方式证明他们是GCed 是的 在 Java7 之后 如果加载字符串文字的类加载器被垃圾收集 并且没有对字符串文字的引用 则字符串文字可以被垃圾收集 注意 在
  • 对于不应该提交的已更改文件,是否有正确的 git 程序?

    我刚刚继承了一个现有的代码库 其中包含多个配置文件 这些配置文件都是通用的 需要针对下载到的每台计算机进行编辑和自定义 Git 显然 告诉我它们已被编辑 并且每次我执行操作时总是将它们显示在 未暂存提交的更改 下git status git
  • ADL 何时应用?

    有3个例子 I typedef int foo namespace B struct S operator int return 24 int foo B S s return 0 int main int t foo B S 24 ADL
  • ZF2 apigility - 我们如何验证 json 数据中的集合

    如何使用 Apigility 获取经过验证的 json 值 例如 我需要验证user id under users集合在以下json数据中 log type split food meal type Break Fast meal date