我目前正在使用Zend Framework 2的Form Annotation构建器(最新2.3.2)。
我有一个单独的表单验证器,它不想玩得很好,我找不到任何关于如何在允许local
主机名时使Hostname验证器正常工作的示例文档。
以下是相关验证程序的代码段:
/**
* @Form\Type("text")
* @Form\Required(false)
* @Form\Options({"label":"name"})
* @Form\Attributes({"id":"name"})
* @Form\Filter({"name":"stringtrim"})
* @Form\Filter({"name":"stringtolower"})
* @Form\Validator({"name":"stringlength", "options":{"min":"1", "max":"254"}, "break_chain_on_failure":"true"})
* @Form\Validator({"name":"hostname", "options":{"allow":"\Zend\Validator\Hostname::ALLOW_LOCAL"}, "break_chain_on_failure":"true"})
* @Form\Validator({"name":"CompanyDns\Validator\DnsName", "break_chain_on_failure":"true"})
*/
public $name;
当表单尝试使用本地名称验证时,我收到验证者响应:
The input appears to be a local network name but local network names are not allowed
我正在关注手册http://framework.zend.com/manual/2.3/en/modules/zend.form.quick-start.html#using-annotations
我有什么想法可以解决这个问题?
答案 0 :(得分:1)
在使用Annotation Builder时,似乎没有像预期的那样传递其他Hostname :: *功能。
所以这一行:
@Form\Validator({"name":"hostname", "options":{"allow":"\Zend\Validator\Hostname::ALLOW_LOCAL"}, "break_chain_on_failure":"true"})
实际应该是:
@Form\Validator({"name":"hostname", "options":{"allow":"4"}, "break_chain_on_failure":"true"})
如果查看Hostname Validator类,4
代表验证器的ALLOW_LOCAL
。
这应该可以解决您的问题。