# Migration depuis les versions précédentes

L'API de `Zend_Validate` a changé quelques fois. Ce guide va vous permettre de noter les différences entre les versions.

## Migrer de 1.9 à 1.10

### Adaptateurs personnels

Lorsqu'une erreur apparait dans un adaptateur crée de toute pièce, `_error()` doit être appelée. Avant Zend Framework 1.10, il était possible d'appeler cette méthode sans aucun paramètre. Le premier template de message d'erreur était alors utilisé.

Ce comportement est problématique lorsque vous avez des validateurs retournant plusieurs messages. Aussi, étendre un validateur peut mener à des comportements inattendus dans une telle situation, comme par exemple l'apparition du mauvais message d'erreur.

    My_Validator extends Zend_Validate_Abstract
    {
        public isValid($value)
        {
            ...
            $this->_error(); // Résultat inattendu
            ...
        }
    }

Pour éviter ces problèmes `_error()` doit desormais prendre obligatoirement un paramètre.

    My_Validator extends Zend_Validate_Abstract
    {
        public isValid($value)
        {
            ...
            $this->_error(self::MY_ERROR); // Ok, erreur définie
            ...
        }
    }

### Simplification dans le validateur des dates

Avant Zend Framework 1.10, 2 messages identiques étaient envoyés dans le validateur des dates. `NOT_YYYY_MM_DD` et `FALSEFORMAT`. Depuis Zend Framework 1.10, seul `FALSEFORMAT` sera retourné lorsque la date passée ne correspond pas au format demandé.

### Corrections dans Alpha, Alnum et Barcode

Avant Zend Framework 1.10, les messages dans les 2 validateurs barcode, le Alpha et le Alnum étaient identiques. Des problèmes pouvaient alors faire surface avec des messages personnalisés, des traducteurs ou des instances multiples des validateurs.

Depuis Zend Framework 1.10, les valeurs des constantes ont changé pour être uniques. Si vous utilisiez les constantes comme le manuel le recommande, aucun changement n'est nécessaire. Mais si vous utilisiez les messages d'erreurs, alors il faudra les changer. Voici les changements opérés:

#### Messages de validation disponibles

Validateur | Constante | Valeur
--- | --- | ---
Alnum | `STRING_EMPTY` | alnumStringEmpty
Alpha | `STRING_EMPTY` | alphaStringEmpty
Barcode_Ean13 | `INVALID` | ean13Invalid
Barcode_Ean13 | `INVALID_LENGTH` | ean13InvalidLength
Barcode_UpcA | `INVALID` | upcaInvalid
Barcode_UpcA | `INVALID_LENGTH` | upcaInvalidLength
Digits | `STRING_EMPTY` | digitsStringEmpty