Un único campo puede definir varios validadores utilizando los validadores lógicos:
sfValidatorAnd: para ser válido, el campo debe pasar todos los validadoressfValidatorOr: para ser válido, el campo debe pasar al menos un validador Los constructores de los validadores lógicos aceptan como primer argumento una lista de validadores. El listado 2-11 emplea sfValidatorAnd para establecer dos validadores obligatorios en el campo nombre.
Listado 2-11 - Empleando el validador sfValidatorAnd
class ContactoForm extends sfForm { public function configure() { // ... $this->setValidators(array( // ... 'nombre' => new sfValidatorAnd(array( new sfValidatorString(array('min_length' => 5)), new sfValidatorRegex(array('pattern' => '/[\w- ]+/')), )), )); } }
Cuando se envía el formulario, el valor del campo nombre debe tener al menos cinco caracteres y debe cumplir con la expresión regular [\w- ]+
Como los validadores lógicos también son validadores, se pueden combinar para crear validaciones tan complejas como las mostradas en el listado 2-12.
Listado 2-12 - Combinando varios validadores lógicos
class ContactoForm extends sfForm { public function configure() { // ... $this->setValidators(array( // ... 'nombre' => new sfValidatorOr(array( new sfValidatorAnd(array( new sfValidatorString(array('min_length' => 5)), new sfValidatorRegex(array('pattern' => '/[\w- ]+/')), )), new sfValidatorEmail(), )), )); } }
Capítulo original en inglés Chapter 2 - Form Validation Traducido por Javier Eguíluz