2013-09-26 108 views
-3

我目前使用正則表達式模式驗證URL,它似乎正常工作。但是,如果我將URL字段留空,則不應該檢查正則表達式驗證,或者只是返回「沒有給出URL」的消息。Zend表單驗證URL

這是我的工作我目前的代碼示例:

array(
    'name'  => 'programurl1', 
    'attributes' => array(
     'type'  => 'text', 
     'error_msg' => 'Enter Valid Program URL 1', 
     'label_msg' => 'Program URL 1 *' 
    ), 
    'validation' => array(
     'required' => true, 
     'filters' => array(
      array(
       'name' => 'StripTags' 
      ), 
      array(
       'name' => 'StringTrim' 
      ) 
     ), 
     'validators' => array(
      array(
       'name' => 'Regex', 
       'options' => array(
        'pattern' => '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/' 
       ) 
      ) 
     ) 
    ) 
) 

我不能確定如何完成我所期待的,當URL字段爲空。

+0

我甚至沒有看到'?'。問題通常有這些。 – pguardiario

+2

我問我可以在同一個數組中添加另一個validaor嗎?通常我希望如果字段爲空正則表達式validaor不被執行。 – Shahbaz

+0

您在詢問關於從網址中刪除驗證的問題,但是您發佈了顯示文本字段的表單嗎?對我沒有意義嗎?如果你可以重新提出問題或提供我可能理解的相關代碼。 –

回答

0

而不是text類型,您可以使用url類型。這特別是指輸入網址值:

$this->add(array(
    'name' => 'programurl', 
    'type' => 'Zend\Form\Element\Url', 
    'options' => array(
     'label' => 'Program URL 1' 
    ), 
    'attributes' => array(
     'required' => 'required' 
    ) 
)); 

URL元素是一種特殊的HTML5元素,也見docs

對於類型爲url的HTML5輸入,Zend \ Form \ Element \ Url意味着與Zend \ Form \ View \ Helper \ FormUrl配對。此元素將過濾器和Zend \ Validator \ Uri驗證程序添加到其輸入過濾器規範中,以驗證服務器上的HTML5 URL輸入值。

Afaik如果瀏覽器無法呈現url輸入元素,它只會將文本輸入顯示爲後備。