我需要在表单中使用URL验证器。现在我正在使用:
$url = new Zend_Form_Element_Text('url');
$url->addValidator(new Zend_Validate_Hostname());
上面的代码将验证网址如:www.domain.com
,但http://www.domain.com
的验证失败。
我应使用哪种验证器来验证协议URL的使用和不协议URL。
答案 0 :(得分:1)
这将验证域和uri:
$form->addElement ('text', 'url',array( 'validators' => array ( array( 'Callback', true, ['callback' => function($value) { if (Zend_Uri::check($value)) { $hostnameValidator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS); //do not allow local hostnames, this is the default $uriHttp = Zend_Uri_Http::fromString($value); return $hostnameValidator->isValid($uriHttp->getHost()); } return false; }], 'messages' => [Zend_Validate_Callback::INVALID_VALUE => 'Please enter a valid URL'] ) ) ));
答案 1 :(得分:0)
您无法使用Zend_Validate_Hostname执行此操作。您可以这样做的方法是编写自己的验证器,将sting分成两部分 - 并使用Zend_Validate_Hostname作为主机名并使用Zend_Validate_InArray验证协议
答案 2 :(得分:0)