如何验证zend框架中的url字段。我尝试了以下代码。
$website = $this->createElementText('website', 'Website');
$website->setOptions(
array(
'filters' => array(
'StringTrim',
'StripTags',
),
'validators' => array(
'NotEmpty',
array(
'Callback',
true,
array(
'callback' => function($value) {
// if (!strpos($value, 'http')) $value = 'http://' . $value;
return Zend_Uri::check($value);
}
),
'messages' => array(
Zend_Validate_Callback::INVALID_VALUE => 'Please enter a valid URL',
),
),
),
)
)->setErrorMessages(array('Please enter a valid URL. For e.g, http://test.com or http://www.test.com'));
$form->addElements(array($website));
但这不准确。例如,它不会像htt://www.google
这样的网址提供错误如何改进我的验证。还有其他方法吗?
答案 0 :(得分:2)
就个人而言,我使用了一个custum验证器,它具有可以轻松重复使用的优点,而无需为每个字段重新编码。
网络上有很多例子,例如here或here或here(法语)......
编码Your_Validate_Uri
课程后,你可以这样做:
$website->addValidator(new Your_Validate_Uri());
我希望它会对你有所帮助。 :)
答案 1 :(得分:1)
我使用这样的东西和我应该做的工作:
'validators' => array(
array(
'validator' => 'Callback',
'options' => array(
'callback' => function ($value) {
if (!filter_var($value, FILTER_VALIDATE_URL) === false) {
return true;
} else {
return false;
}
},
'messages' => 'This is not a valid url address'
),
'breakChainOnFailure' => true
),
),
祝你好运;)