将 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 过滤器和验证链附加到模型/理论实体 的相关文章

  • ASP.NET MVC 的验证选项有哪些

    net mvc 的验证选项有哪些 他们中的任何一个都有像 Webforms 那样的很好的验证摘要吗 您可以使用 MVC html 验证摘要 请参阅此博客 http blog maartenballiauw be post 2008 08 2
  • 如何使用 R 中的 dplyr 包在列中保留具有相同值的行?

    我想知道如何使用过滤列中具有相同值的行dplyr包裹 我尝试做一些与本文中要求和建议相反的事情question https stackoverflow com questions 46906630 filtering rows where
  • 国家/城市/州验证

    我想使用 PHP 和 jQuery 做以下事情 https www careerbuilder com share register aspx sc cmp1 JS LoginASPX RegNow https www careerbuil
  • WPF DataGrid 验证错误?

    这可能是预期的功能 但对我来说它确实像是一个错误 我正在使用开箱即用的 WPF DataGrid 绑定到 ObservableCollection 和尝试使用一些验证规则来提供良好的用户反馈 不用说 问题多得我数不过来 但我会坚持眼前的问题
  • 在 Django 中使用下拉表单过滤 ListView 的最佳方法

    我正在尝试使用下拉表单根据用户过滤 ListView 模型 py class Post models Model author models ForeignKey auth User verbose name Post Author vie
  • Jquery:表单验证不起作用

    我对 Jquery 很陌生 希望你们能帮助我解决这个 jquery 验证问题 一直在尝试验证表单 但它根本没有验证 它接受我在字段中输入的任何内容 无论我设置什么限制 请帮忙 谢谢 这是我的代码
  • Groovy:验证 JSON 字符串

    我需要检查 Groovy 中的字符串是否为有效的 JSON 我的第一个想法就是把它发送出去new JsonSlurper parseText myString 并且 如果没有例外 就假设它是正确的 然而 我发现 Groovy 很乐意接受尾随
  • 你把你的验证放在 asp.net mvc 3 的哪里?

    ASP NET MVC 中一种常见的推荐做法是您不应该将您的商业模式发送到您的视图中 http lostechies com jimmybogard 2009 06 30 how we do mvc view models 相反 您应该创建
  • Rails 验证日期范围的唯一性

    我有一个涉及员工缺勤记录的应用程序 我需要确保每条记录的开始日期和结束日期不重叠 例如 如果我输入了从今天开始到明天结束的缺勤记录 则不可能以任何方式在该日期范围内输入另一个缺勤记录 所以我不能制作一个从前天开始 然后在后天或任何更晚的日期
  • WinForms 验证事件阻止 Escape 键关闭表单

    我有一个简单的表单 带有一个文本框 加上 确定 和 取消 按钮 表单的 AcceptButton 和 CancelButton 设置正确 并且 确定 和 取消 按钮的 DialogResult 设置为 确定 和 取消 我想向 TextBox
  • 如何使用自定义 ValidationAttribute 来确保两个属性匹配?

    我们使用 xVal 和标准DataAnnotationsValidationRunner描述here http blog stevensanderson com 2009 01 10 xval a validation framework
  • 在shiny中过滤传单地图数据

    我在用传单地图设置这个闪亮的东西时遇到了麻烦 我的原帖 https stackoverflow com questions 50111566 applying leaflet map bounds to filter data within
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何为名称为数组的 jquery 表单验证插件创建规则?

    有谁知道当您有一个数组的名称属性时如何为 jquery 表单验证插件创建规则 eg
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 删除地图函数中的重复项[重复]

    这个问题在这里已经有答案了 我正在尝试删除数组中的重复项 我有来自帖子的标签 这也是数组 tags react javascript node 从地图函数我得到这样的输出 node react javascript react javasc
  • 从流中过滤/删除无效的 xml 字符

    首先 我无法更改 xml 的输出 它是由第三方生成的 他们在 xml 中插入无效字符 我得到了 xml 字节流表示形式的 InputStream 除了将流消耗到字符串中并对其进行处理之外 是否有一种更干净的方法来过滤掉有问题的字符 我找到了

随机推荐