带注释生成器的主机名验证器

时间:2014-09-08 17:07:26

标签: zend-framework2

我目前正在使用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

我有什么想法可以解决这个问题?

1 个答案:

答案 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

这应该可以解决您的问题。

相关问题