anterior  
índice  
siguiente  
Updated 2012-10-02 - Version ZF 2.0.3

Cadenas de Validadores

Frecuentemente deben aplicarse múltiples validaciones a algún valor en un orden particular. El siguiente código demuestra una forma de resolver el ejemplo de la introducción, donde el nombre de usuario debe tener entre 6 y 12 caracteres alfanuméricos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// Crea una cadena de validadores y le agrega validadores
$validatorChain = new Zend_Validate();
$validatorChain->addValidator(
                    new Zend_Validate_StringLength(array('min' => 6,
                                                         'max' => 12)))
               ->addValidator(new Zend_Validate_Alnum());

// Valida el username
if ($validatorChain->isValid($username)) {
    // username pasó la validación
} else {
    // username falló en la validación; muestre las razones
    foreach ($validatorChain->getMessages() as $message) {
        echo "$message\n";
    }
}

Los validadores se ejecutan en el orden en que se agregaron a Zend_Validate. En el ejemplo anterior, el nombre de usuario, primero se comprueba que su longitud esté entre 6 y 12 caracteres y luego se controla para garantizar que sólo contiene caracteres alfanuméricos. La segunda validación; de caracteres alfanuméricos; se realiza independientemente de que la primera validación; de longitud entre 6 y 12 caracteres; tenga éxito. Esto significa que si ambas validaciones fallan, getMessages() devolverá mensajes de fracaso desde ambos validadores.

En algunos casos tiene sentido detener la cadena de validación si falla alguno de los procesos de validación. Zend_Validate acepta tales casos pasando como segundo parámetro el método addValidator(). Poniendo $breakChainOnFailure a TRUE, el validador agregado quebrará la cadena de ejecución por el fracaso, que evita correr cualquier otra validación que se decida que es innecesaria o inapropiada para la situación. Si el ejemplo anterior fue escrito como sigue, entonces el sistema de validación alfanumérica no se ejecutará si falla la longitud del string de validación:

1
2
3
4
5
$validatorChain->addValidator(
                    new Zend_Validate_StringLength(array('min' => 6,
                                                         'max' => 12)),
                    true)
               ->addValidator(new Zend_Validate_Alnum());

Cualquier objeto que implemente Zend_Validate_Interface puede ser utilizado en una cadena de validación.

|

Tema anterior

Clases de Validación Estándar

Próximo tema

Escribiendo Validadores

Esta página

Nota: Es necesario estar conectado a tu cuenta GitHub para contribuir a la documentación.

Edit this document

Edit this document

The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.

  1. Login with your GitHub account.
  2. Go to Cadenas de Validadores on GitHub.
  3. Edit file contents using GitHub's text editor in your web browser
  4. Fill in the Commit message text box at the end of the page telling why you did the changes. Press Propose file change button next to it when done.
  5. On Send a pull request page you don't need to fill in text anymore. Just press Send pull request button.
  6. Your changes are now queued for review under project's Pull requests tab on GitHub.