2013-09-26 106 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输入元素,它只会将文本输入显示为后备。