Zend framework 需要Zend表单验证方面的帮助吗

Zend framework 需要Zend表单验证方面的帮助吗,zend-framework,forms,Zend Framework,Forms,目前我正在开发一个带有Zend框架的网站 我需要开发一个类似于此处的位置字段: 允许用户输入邮政编码值(由4个数字组成)或市郊名称 我现在陷入了Zend表单验证部分 基本上,我需要确保数据库中存在邮政编码值或郊区名称 $validator = new Zend_Validate_Db_RecordExists('postcodeTable', 'postcode'); 我可以使用Zend\u Validate\u Db\u RecordExists轻松检查我的数据库中是否存在邮政编码 $val

目前我正在开发一个带有Zend框架的网站

我需要开发一个类似于此处的位置字段:

允许用户输入邮政编码值(由4个数字组成)或市郊名称

我现在陷入了Zend表单验证部分

基本上,我需要确保数据库中存在邮政编码值或郊区名称

$validator = new Zend_Validate_Db_RecordExists('postcodeTable', 'postcode');
我可以使用
Zend\u Validate\u Db\u RecordExists
轻松检查我的数据库中是否存在邮政编码

$validator = new Zend_Validate_Db_RecordExists('postcodeTable', 'postcode');
但是,如何添加另一个郊区名称验证来检查数据库中是否存在郊区名称(而不与邮政编码验证检查冲突)

有没有一个清晰简单的方法来实现这一点

我是否需要编写自定义验证器?如果是,我怎么做


非常感谢:)

我认为您不能像装饰程序那样使用别名验证程序,但您可以扩展Zend_Validate_Db_RecordExists,例如:

class App_Validate_Db_SuburbExists
    extends Zend_Validate_Db_RecordExists
{

}
不要忘记将库的验证程序前缀XPath添加到元素中,例如

$element->addPrefixPath('App_Validate_Db', 'App/Validate/Db', 'validate');
然后,您可以添加两个具有不同选项的验证器

$element->addValidator(
            new App_Validate_Db_SuburbExists('suburbTable', 'suburb'))

        ->addValidator(
            new Zend_Validate_Db_RecordExists('postcodeTable', 'postcode'));

我想到的自定义验证器只是一个代理

像这样的

$proxyValidator = new App_Validate_Proxy(); //implements Zend_Validate_Interface
$proxyValidator->addValidator($validateDb1);
$proxyValidator->addValidator($validateDb2);

至少有一个子验证程序必须返回true以将值视为有效的

$proxyValidator::isValid():


如果要添加验证器的具体实例,可能不需要设置前缀路径。但是如果您想延迟加载验证器,那么必须提供路径。