2013-03-06 104 views

回答

0

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

你需要阻止某些域名是一个自定义验证器。

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

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

这里是我的建议:

  • 写自己的验证,扩展的Zend \验证\主机名。如果你重载了isValid()方法,你可以将你的自定义阻塞逻辑添加到验证器中......不要忘记在检查你自己的逻辑之后返回父方法值。
  • 配置EmailAddress验证器以使用您的自定义主机名验证器(使用setHostnameValidator()方法或通过在构造函数中传递配置)。
  • 使用您的EmailAddress的验证程序的输入过滤器,请参阅文档中如何做到这一点的详细信息:http://framework.zend.com/manual/2.2/en/modules/zend.input-filter.intro.html

希望这有助于。