Zend Framework : validateur pour une URL

Logo Zend Framework

Bizarrement, le Zend Framework ne fournit pas de validateur pour vérifier que la syntaxe d'une URL est correcte. Pourtant, le composant Zend_Uri dispose d'une méthode check qui remplit ce rôle. On peut s'en servir pour écrire un validateur personnalisé :

class Wiip_Validate_Uri extends Zend_Validate_Abstract
{
    const BAD_URI = 'badUri';
 
    protected $_messageTemplates = array(
        self::BAD_URI => "'%value%' n'est pas une URI valide"
    );
 
    public function isValid($value)
    {
        $this->_setValue($value);
 
        if (!Zend_Uri::check($value)) {
            $this->_error();
            return false;
        }
 
        return true;
    }
}

Vous pouvez l'utiliser dans vos formulaires de cette façon :

class MonFormulaire extends Zend_form
{
    public function init()
    {
        [..]
 
        // Ajoute un champ "web" au formulaire
        $this->addElement(
            'text',
            'web',
            array(
                'label' => 'Site Web :',
                'size' => 64,
                'validators' => array('Uri')
            )
        );
 
        // Ajoute le préfixe aux chemins de recherche des plugins de validation
        $this->web->addPrefixPath('Wiip_Validate', 'Wiip/Validate', 'validate');
 
        [..]
     }
}

Note du 29/09/2009 : Zend_Uri ne supporte que les schémas HTTP et HTTPS. On ne peut donc pas s'en servir pour l'instant pour valider une adresse FTP par exemple.

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account, used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.