2

我正在使用 Zend Framework 2.1

我想为 Zend 表单的电子邮件字段创建域或电子邮件地址的阻止列表。我认为可以使用 Zend InputFilter。但我不知道该怎么做

4

1 回答 1

0

InputFilter 旨在验证和清理一组输入数据,它们使用验证器和过滤器来实现这一目标。

您需要阻止某些域的是自定义验证器。

这里棘手的部分是您需要从电子邮件地址中提取域,这是 EmailAddress 验证器已经在做的事情(而且做得很好)。

幸运的是,EmailAddress 验证器使用内部主机名验证器来检查域是否有效。

这是我的建议:

  • 编写您自己的验证器,扩展 Zend\Validator\Hostname。如果您重载 isValid() 方法,您将能够将您的自定义阻塞逻辑添加到验证器......在检查您自己的逻辑后不要忘记返回父方法值。
  • 配置一个 EmailAddress 验证器以使用您的自定义主机名验证器(使用 setHostnameValidator() 方法,或通过在构造函数中传递配置)。
  • 在 InputFilter 中使用您的 EmailAddress 验证器,有关如何执行此操作的更多详细信息,请参阅文档:http: //framework.zend.com/manual/2.2/en/modules/zend.input-filter.intro.html

希望这可以帮助。

于 2014-02-07T08:45:43.257 回答