将 zend 过滤器和验证链附加到模型/理论实体

2024-01-29

本集来自大象之声 http://voicesoftheelephpant.com/?s=Matthew+Weier+#podPressPlayerSpace_1, 开始谈论Zend_Form如何Zend\Form将于 22:00 左右出现在 Zend Framework 2 中。

过滤和验证附加到模型而不是绑定到表单,这允许在模型级别拥有业务规则(验证和过滤)。

我正在使用 Zend Framework 1.11 进行开发,我的模型是 Doctrine 2.2 实体:如何将过滤器和验证链附加到我的实体? 我想验证实体@LifecycleCallbacks或者将过滤和验证附加到实体本身。这样,无论数据来自何处(无论是来自 Web 表单上下文还是来自 Web 服务,甚至是命令行上下文),我都可以在将数据刷新到数据库之前对其进行验证。

任何帮助和代码示例将不胜感激。谢谢你!


根据我对 ZF2 Forms RFC 的理解http://framework.zend.com/wiki/display/ZFDEV2/RFC++-+Forms http://framework.zend.com/wiki/display/ZFDEV2/RFC+-+Forms您将能够通过在属性上声明过滤器/验证注释来注释模型/实体。

然后,您必须将模型绑定到表单对象,表单将读取任何相关注释并将其应用到自身。我在这个实现中看到的一个问题是,验证/过滤逻辑仍然没有真正的分离,因为这些定义封装在表单对象中。

更好的(我不知道这是否在管道中)是让表单对象调用模型上的验证例程。当然,可以模拟 Form 组件在模型中的功能(通过阅读注释)并在本地应用(在 ZF2 中)。该组件目前正在开发中,因此我肯定有兴趣在其接近完成时玩一玩。

无论如何,对于 ZF 1.11(我自己也使用过这个实现),您可以在模型中定义验证例程,并且 $model->validate() 生成的任何错误消息都可以注入到 Zend Form 错误堆栈中。

// element
$form->getElement('my_element')->addErrors($model->getErrorMessages());

// form
$form->addErrors($model->getErrorMessages());

所以你最终会得到一个类似的实现;

$form = new My_Form();
if ($this->_request->_isPost())
{
   $data = $this->_request->getPost();
   $model = new \Entities\MyModel();
   $model->populate($data);
   if (!$model->isValid())
   {
      $form->addErrors($model->getErrorMessages());
   }
   if ($form->isValid())
   {
      // continue to save the model etc...
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 zend 过滤器和验证链附加到模型/理论实体 的相关文章

  • 自定义 jquery 验证和不显眼的 JavaScript

    我正在尝试编写一个自定义验证 如果在提交表单时文本区域中存在 html 则会给出错误 我有以下内容 它不起作用 我不知道为什么 我也不明白不引人注目的部分 有人可以告诉我如何做到这一点 因为我看到其他有它的例子 文本区域有一个类 note
  • PHP 正则表达式 [仅接受选定的字符]

    我想接受用户输入的字符列表并拒绝其余的 我可以接受格式化字 符串或查找是否缺少字符 字符串 但我如何才能只接受一组字符而拒绝所有其他字符 我想使用 preg match 来做到这一点 例如允许的字符有 a z A Z 用户必须能够以任何顺序
  • 在RequiredFieldValidator 触发后调用JavaScript 方法?

    表单元素被视为无效后是否可以触发 JavaScript 方法 这是我的场景 ASPX 页面上有 2 个选项卡 用户必须在两个选项卡上填写信息 用户在选项卡 2 上单击提交按钮 但是 第一个选项卡上有一个必填字段需要注意 我是否需要创建自定义
  • 使用 @Valid 进行 Spring 验证

    我正在验证传入属性 但验证器甚至捕获未注释的其他页面 Valid RequestMapping value showMatches spr method RequestMethod GET public ModelAndView showM
  • 如何验证文本是否为有效的 HTML?

    我正在使用旧版本泰勒里克的 http www telerik com Editor http demos telerik com aspnet ajax editor examples default defaultcs aspx控件 并将
  • Jquery Validate:如何忽略占位符文本(默认/空白时产生错误)

    我想让 jquery 验证忽略默认文本 我检查默认文本的方法是检查 element value 元素 alt 文本 这是我的代码 但无论它是空白 默认文本还是任何其他文本 它都会返回无效 validator addMethod notDef
  • PHP mcrypt_decrypt - 我可以确定数据是否使用正确的密钥解密?

    我正在编写一个 php 脚本 并使用 mcrypt 来加密 解密任意数据 当我使用另一个密钥解密加密数据时 例如 我输入了错误的密码 输出当然不会被正确解密 如果使用了错误的密钥 我想显示一条错误消息 但我认为很难将输出字符串验证为正确的
  • 如何将 DataAnnotations ErrorMessageResourceName 与自定义资源解决方案结合使用

    我正在使用 C 构建 MVC Web 应用程序 由于该网站将是多语言的 因此我实现了自己的资源管理器 该类负责根据当前线程区域性从数据库 缓存中获取所需的资源字符串 并且到目前为止工作正常 我的问题是 我想使用我的自定义 ResourceM
  • 对 Windows 窗体上的字段执行数据验证的最简单方法

    我有一个 Windows 窗体项目 我想在用户按下底部的计算按钮之前强制用户在某些字段中输入值 这些字段包括三对单选按钮 five 文本框和一个组合框 因此基本上所有这些字段都需要包含一个值才能执行计算 此外 文本框应包含numbers 任
  • 与其自身的多对多关系不能利用相关名称属性

    我正在尝试克隆 Twitter 该应用程序有一系列用户 每个用户都有一个用户个人资料 UserProfile模型如下 class UserProfiles models Model authenticated user models One
  • 如何编写返回 Validation 的函数?

    这是我之前的后续question https stackoverflow com questions 30527740 composing validating functions in scala 假设我有两个验证函数 如果输入有效则返回
  • ASP.NET 服务器端或客户端的验证控件?

    ASP NET 中的验证控件在服务器端和客户端都有效吗 或者它仅用于客户端验证 Thanks ASP NET 验证控件执行这两项操作client side and server side验证 EnableClientValidation是财
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • RAILS 3 模型验证包含不起作用

    Schema Information Schema version Table name terms id integer not null primary key user id integer term type string 255
  • Magento,翻译验证错误消息

    我已经成功创建了原型验证的新规则 现在我需要翻译错误消息 位置 Javascript 中的字符串 但是 我只能翻译所有消息 我的新自定义消息似乎无法翻译 我该如何改变这个 也许你需要一个jstranslator xml里面的文件etc fo
  • 如何通过单击按钮从反应状态挂钩数组中删除对象

    我正在尝试制作一个按钮 根据传递的索引从数组 即状态 中删除一个对象 我已经尝试了很多 但我的方法都不起作用 所以这是代码 希望我可以找人帮忙 state const items setItems useState name quantit
  • SQLAlchemy - 将文本查询与过滤器结合起来

    我在用着SA 0 6 6 Python 2 66 and Postgres 8 3 我有某些查询需要一些复杂的安全检查 可以使用WITH RECURSIVE询问 我想做的是将文本查询与查询对象结合起来 这样我就可以根据需要应用过滤器 我最初
  • 在 Cocoa 应用程序中验证用户输入的 URL 的最佳方法是什么?

    我正在尝试构建一个自制的网络浏览器 以更加熟练地使用 Cocoa 我需要一种好方法来验证用户是否输入了有效的 URL 我尝试过一些正则表达式 但 NSString 有一些有趣的怪癖 并且不喜欢我见过的大多数正则表达式使用的一些反引号 你可以
  • 如何在 PHP 中验证小数

    如何在 PHP 中验证十进制数字 我查看了 is numeric 但这对我不起作用 bool is numeric 混合变量 查找给定变量是否为 数字 数字字符串包括 可选符号 任意数量的数字 可选的小数部分和可选的 指数部分 因此 012
  • JS jQuery - 检查值是否在数组中

    我更喜欢 PHP 而不是 JS 我认为我的问题更多是语法问题 我有一个小的 jQuery 来 验证 并检查输入值 它适用于单个单词 但我需要数组 我正在使用inArray jQuery 的 var ar value1 value2 valu

随机推荐