Для валидации URL существует валидатор Zend_Validate_Hostname. Однако для большинства случаев он слишком мощный и выдаёт слишком детальные сообщения об ошибках, непонятные обычным пользователям.
На сайте LAMPComputing появилось руководство по написанию собственного валидатора для проверки URL-адресов. Предлагается следующий валидатор:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class BV_Validate_Uri extends Zend_Validate_Abstract
{
    const MSG_URI = 'msgUri';

    protected $_messageTemplates = array(
        self::MSG_URI => "Invalid URI",
    );

    public function isValid($value)
    {
        $this->_setValue($value);

        //Validate the URI
        $valid = Zend_Uri::check($value);
       
        //Return validation result TRUE|FALSE  
        if ($valid)  {
            return true;
        } else {
            $this->_error(self::MSG_URI);
            return false;
       
        }

    }
}

Как видите, ничего лишнего. Минимум необходимого функционала.

Интегрируется валидатор с Zend_Form стандартными средствами:

1
2
3
$website = $form->createElement('text', 'website');
$website->setLabel('Website URL');
$website->addValidator(new BV_Validate_Uri());

Полный вариант статьи про валидацию URI при помощи Zend_Framework

Leave a Reply