Zend Framework:如何在表单元素上设置自定义验证器?

发布于 2024-07-09 23:40:44 字数 512 浏览 8 评论 0原文

我正在编写一个自定义验证器,用于检查至少一个字段是否具有值。 我想验证“namefield”或“idfield”是否具有值。 其中之一可以为空,也可以两者都有值,但至少其中之一必须有值。

$nameField = new Zend_Form_Element_Hidden('namefield');
$nameField->setValue($this->nameFieldValue)
          ->addValidator('AtLeastOneHasValue', false, array('idfield'));

据我了解,除非我将表单元素设置为必需,否则我的验证器将不会验证。

->setRequired(true)

但如果我将其设置为必需,它会自动验证它不为空,并且错误消息显示它为空。 我想允许该字段为空,并使用自定义验证器验证多个字段。 如何使用自定义验证器验证表单元素,而不将表单元素设置为必需?

I'm writing a custom validator that checks that at least one field has a value. I want to validate that either 'namefield' or 'idfield' has a value. One of them can be empty, or both can have a value, but at least one of them must have a value.

$nameField = new Zend_Form_Element_Hidden('namefield');
$nameField->setValue($this->nameFieldValue)
          ->addValidator('AtLeastOneHasValue', false, array('idfield'));

From what I understand, my validator will not validate unless I set my form element to required.

->setRequired(true)

But if I set it to required, it automatically validates that it is not empty, and the error message says that it is empty. I want to allow the field to be empty, and validate multiple fields with my custom validator. How do I validate a form element with my custom validator, without setting the form element to required?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一江春梦 2024-07-16 23:40:44

检查此文档页面中的 setAllowEmpty() 方法。 这应该可以帮助您到达您想去的地方。

setAllowEmpty($flag) 和
getAllowEmpty() 允许您修改
可选元素的行为
(即,需要的元素
标志为假)。 当“允许为空”时
flag 为 true,空值不会
传递到验证器链。

Check this documentation page for the setAllowEmpty() method. This should help you get where you are trying to go.

setAllowEmpty($flag) and
getAllowEmpty() allow you to modify
the behaviour of optional elements
(i.e., elements where the required
flag is false). When the 'allow empty'
flag is true, empty values will not be
passed to the validator chain.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文