Zend表单验证URL

时间:2013-09-26 12:56:31

标签: php regex zend-framework2 zend-validate

我目前正在使用Regex模式验证网址,但它似乎正常运行。但是,如果我将URL字段留空,则不应检查正则表达式验证,或者只是返回“没有给出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字段为空时,我不确定如何完成我要查找的内容。

1 个答案:

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

  

Zend \ Form \ Element \ Url旨在与类型为url的HTML5输入的Zend \ Form \ View \ Helper \ FormUrl配对。此元素将过滤器和Zend \ Validator \ Uri验证器添加到其输入过滤器规范中,以验证服务器上的HTML5 URL输入值。

Afaik如果浏览器无法呈现url输入元素,它只会将文本输入显示为后备。