2013-01-03 42 views
2

我需要一個表單內的URL驗證器。現在,我使用的是:Zend Framework主機名驗證器

$url = new Zend_Form_Element_Text('url'); 
$url->addValidator(new Zend_Validate_Hostname()); 

將上面的代碼驗證網址,如:www.domain.com,但將無法通過驗證爲http://www.domain.com

我應該使用什麼驗證程序來驗證兩者,無論是否使用協議URL。

+0

您需要同時驗證?或者只是域名很重要? – Vadyus

+0

我需要這兩個URL都會通過驗證過程。 –

回答

0

你不能用Zend_Validate_Hostname來做。你可以這樣做的方法是編寫你自己的驗證器,將它分成兩部分 - 並使用Zend_Validate_Hostname作爲主機名,Zend_Validate_InArray作爲協議的驗證方法

0

這將驗證的領域和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'] 
        ) 
       ) 
      ));