Zend Framework notEmpty 验证器 setRequired

2024-01-11

我看过其他的问题 https://stackoverflow.com/questions/3871460/zend-form-setrequiredtrue-or-addvalidatornotempty/谷歌搜索这个。我的问题是,当我提交带有空文本框的表单时notEmpty验证器,它不会触发错误。

首先,我想看看我是否理解两者之间的区别notEmpty and setRequired。据我了解,notEmpty如果提交元素且值为空,验证器会给出错误。也就是说,如果 POST 数据(对于表单)中不存在某个条目,那么如果该元素不存在,则不会生成错误required。就像它仅在元素是时才运行set. The setRequired方法会自动添加一个notEmpty除非另有说明,否则验证者在幕后。这确保元素的条目必须存在并且不能为空。正确的?

现在,我尝试在我添加的表单中使用此逻辑notEmpty验证器,像这样:

$username = new Zend_Form_Element_Text('txtUsername');
$username->addValidator(new Zend_Validate_NotEmpty(), true);

其他文本字段也是如此。如果我提交表单而不输入值,我的 POST 数据将如下所示:

(
    [txtUsername] => 
    [txtPassword] => 
    [txtRepeatPassword] => 
)

然而,isValid仍然评估为true并且不会生成任何错误消息。为什么?不应该是notEmpty验证器确定值是空的,因为该元素在 POST 数据中有一个条目?如果我使用setRequired(true),它按照我想要的方式工作。当值是空字符串时,它确定用户名不为空,这让我很困惑。 :-)

提前致谢。


我同意这有点令人困惑。原因是所有表单元素都有一个allowEmpty标志(默认为 true),如果值为空则跳过验证。它以这种方式工作,因为否则,向可选元素添加验证器将是一个真正的痛苦,例如:

$dateOfBirth = new Zend_Form_Element_Text('dob');
$dateOfBirth->setLabel('Date of birth (optional)');
$dateOfBirth->addValidator(new Zend_Validate_Date());
$form->addElement($dateOfBirth);

如果用户选择不输入出生日期,验证总是会失败,因为 '' 不是有效日期。随着allowEmpty默认情况下打开标志,它会按照您的预期工作(它仅验证输入的日期)。

Calling setRequired(true) adds a NotEmpty验证器,但它也设置allowEmpty标记为假。我建议您坚持这种方法。或者,您也可以通过设置标志来开始工作:

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

Zend Framework notEmpty 验证器 setRequired 的相关文章

随机推荐

  • python 全局名称“self”未定义

    刚开始学习 python 我确信这是一个愚蠢的问题 但我正在尝试这样的事情 def setavalue self self myname harry def printaname print Name self myname def mai
  • 获取计算高度 - Javascript - 不是 jQuery

    我有两个并排的 div 设置为自动高度 我希望它们具有相同的高度 因此我将它们组合为数组的成员 我递归遍历数组并将最高的高度设置为最高的高度 问题是我尝试获取计算高度的所有操作都导致了错误的值 我已经尝试过以下方法 els x curren
  • 是否值得缓存 Delphi 内存管理器创建的对象?

    我有一个可以创建和销毁数千个对象的应用程序 是否值得缓存和重用对象 或者 Delphi 的内存管理器足够快 多次创建和销毁对象并不是那么大的开销 与跟踪缓存相反 当我说值得时 我当然在寻找以提高性能 根据最近的测试 如果对象创建并不昂贵 即
  • 使用 Outlook 对象模型,我可以获得在 Outlook 联系人中看到的字段吗

    我可以使用 Outlook 对象模型查看全局地址簿 但无论如何使用 csharp 的 Outlook 对象模型我可以获得一个人的以下属性 城市 州 国家 地区 别名 标题 电话 我似乎无法在 AddressEntry 对象上找到这些属性 编
  • 如何使用 CMake 使用 install-export 和 find_package 查找并链接到库?

    您有一个支持 CMake 的库项目 您需要在另一个库或可执行文件中使用它 如何使用CMake查找并链接到库 您可能有以下偏好 编写尽可能少的样板代码 将链接库的内部细节与消费目标解耦 理想情况下 该库的用法应该如下所示 add execut
  • 从失败的变基中恢复

    我在用着git svn通过公司指定的 svn 服务器获得一些 git 的好处 我刚刚有一个 rebase 出了严重的问题 我正在努力找出最好的恢复方法 事情是这样的 首先 我有这个 1 master B C D E feature fix
  • CSS:滚动时背景图像不填充

    在一个非常小的网站上工作 一次性加载 所以有一个 div 保存所有背景图像 最重要的是 即 更高的 z 指数 有一个内容 div 包含所有内容 我可以根据选择的内容轻松切换背景 不幸的是 我注意到如果你在一个小窗口中启动 就会出现滚动条 如
  • 如何在 Angular2 组件中操作 scss 变量

    有没有办法可以更改 Angular2 组件中声明的 scss 变量 我想根据用户选择动态添加主题 因此需要修改 scss 变量 我读到了有关将所有 scss 变量保存在单独的 scss 文件中并将其导入其他 scss 文件中的内容 但是我可
  • 我们可以在 Flutter 中显示一些动态文本以及 Google 地图上的标记吗?

    在 Flutter 中是否有可能实现像这样的图像 我使用 google maps flutter 插件在屏幕上显示 GoogleMap 并使用 BitmapDescriptor 更改地图标记的图标 现在我只是在寻找某种方法来显示标记下方的文
  • 一个 UITableView 中有多个 UITableViewCell 类?

    我正在组合一个 TableView 并且需要在同一个表中使用多个单元格类 例如 我将如何在我的cellForRowAtIndexPath method UITableViewCell tableView UITableView tableV
  • 查询构建器中不存在 Get onlyTrashed()

    我正在尝试从表消息中获取废弃的行 public function trash return this gt onlyTrashed gt where user id this gt u gt orWhere receiver this gt
  • 在 iOS 模拟器中启动 Flutter 应用程序时出错

    我在 iOS 模拟器上启动 Flutter 应用程序时遇到问题 从下面的错误输出来看 这个问题似乎与本地主机连接等有关 但我无法找到如何修复它 我正在运行 MacOS Catalina 版本 10 15 6 19G73 iOS模拟器版本11
  • 编写调用Fortran库的R包

    我正在尝试编写一个调用 Fortran 子例程的 R 包 我正在使用 Rstudio 包模板自动创建一堆文件和目录 In R 我有一个文件 Fpi R Fpi lt function DARTS ROUNDS if is loaded Fp
  • 在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]

    这个问题在这里已经有答案了 目前我正在开始一个新的Activity并打电话finish在当前的一个上 是否有任何标志可以传递给Intent这使得完成电流Activity无需致电finish手动从代码 您可以使用finish 方法或者您可以使
  • 为什么通过引用捕获变量的 lambda 不能转换为函数指针?

    如果我有一个通过引用捕获所有自动变量的 lambda 为什么不能转换为函数指针呢 常规函数可以像通过引用捕获所有内容的 lambda 一样修改变量 那么为什么不一样呢 换句话说 我想 lambda 和 a 之间的功能区别是什么 捕获列表和常
  • 使用 Laravel 进行 Flutter FCM

    我正在使用 Laravel 作为我的应用程序后端 并希望按主题向我的 flutter 应用程序发送推送通知 现在我在我的 flutter 应用程序中实现了 firebase 消息传递 作为 registerOnFirebase fireba
  • 立即运行 Jenkins 作业

    我有一个非常轻量级的作业 应该在触发时立即执行 而不是等待一个小时才能完成当前作业 据我了解 一个蝇量级任务就是我想要的 它将创建一个临时执行器 专门用于该任务 我怎样才能让一个工作作为蝇量级运行 我最近也遇到了同样的问题 我的公司有很多
  • 我应该如何折叠 Python 中的元素? [复制]

    这个问题在这里已经有答案了 例如 l a 1 b 2 a 2 collapsed l dict a 1 2 b 2 如何最好地从l to collapsed l 从某种意义上说 我想要某种方式来概括我正在崩溃的 领域 以及哪个领域 我认为这
  • eslint 禁用扩展覆盖

    如果你有一个覆盖 你想 降级 js解析器 你如何关闭extends来自父母 parserOptions很容易被覆盖 因为它是基于密钥的 extends因为空数组不执行任何操作 因为它尝试将空列表附加到原始数组 如果您将其设置为null 您会
  • Zend Framework notEmpty 验证器 setRequired

    我看过其他的问题 https stackoverflow com questions 3871460 zend form setrequiredtrue or addvalidatornotempty 谷歌搜索这个 我的问题是 当我提交带有