2.3.1. Personalizar los mensajes de error
Como se aprecia en la figura 2-4 anterior, los mensajes de error por defecto no son muy útiles. A continuación se muestra cómo personalizarlos para que sean más intuitivos.
Todos los validadores pueden añadir errores en el formulario. Un error está formado por un código de error y un mensaje de error. Cada validador dispone al menos de los errores required
y invalid
, definidos en la clase sfValidatorBase
:
Código | Mensaje | Descripción |
---|---|---|
required |
Required. |
Es obligatorio rellenar el campo y ahora está vacío |
invalid |
Invalid. |
La información del campo no es válida |
A continuación se muestran los códigos de error de los validadores que se han visto hasta ahora:
Validador | Código de error |
---|---|
sfValidatorString |
max_length , min_length |
sfValidatorEmail |
- |
sfValidatorChoice |
- |
Para personalizar los mensajes de error, se pasa un segundo argumento a los objetos validadores. El listado 2-4 personaliza varios mensajes de error y la figura 2-5 muestra el resultado.
Listado 2-4 - Personalizando mensajes de error
class ContactoForm extends sfForm
{
protected static $asuntos = array('Asunto A', 'Asunto B', 'Asunto C');
public function configure()
{
// ...
$this->setValidators(array(
'nombre' => new sfValidatorString(array('required' => false)),
'email' => new sfValidatorEmail(array(), array('invalid' => 'La dirección de email no es válida.')),
'asunto' => new sfValidatorChoice(array('choices' => array_keys(self::$asuntos))),
'mensaje' => new sfValidatorString(array('min_length' => 4), array('required' => 'Es obligatorio escribir un mensaje.')),
));
}
}
La figura 2-6 muestra el mensaje de error que se obtiene si se envía un mensaje muy corto, ya que se ha establecido que su longitud mínima debe ser cuatro caracteres:
El mensaje de error por defecto asociado con el código de error min_length
es diferente de los otros mensajes de error, ya que dispone de dos variables: los datos introducidos por el usuario (foo
en el ejemplo anterior) y el número mínimo de caracteres de este campo (4
en el ejemplo anterior). El listado 2-5 personaliza aún más el mensaje de error utilizando estas dos vairables y la figura 2-7 muestra el resultado.
Listado 2-5 - Personalizando los mensajes de error con variables
class ContactoForm extends sfForm
{
public function configure()
{
// ...
$this->setValidators(array(
'nombre' => new sfValidatorString(array('required' => false)),
'email' => new sfValidatorEmail(array(), array('invalid' => 'La dirección de email no es válida.')),
'asunto' => new sfValidatorChoice(array('choices' => array_keys(self::$asuntos))),
'mensaje' => new sfValidatorString(array('min_length' => 4), array(
'required' => 'Es obligatorio escribir un mensaje.',
'min_length' => 'El mensaje "%value%" es demasiado corto. Su longitud debe ser al menos de %min_length% caracteres.',
)),
));
}
}
Todos los mensajes de error pueden utilizar variables simplemente encerrando su nombre con el carácter del porcentaje (%
). Las variables disponibles normalmente son los datos introducidos por el usuario (que se llama value
) y los valores definidos por cada validador (min_length
, max_length
, etc.)
Nota Si quieres conocer todos los códigos de error, opciones y mensajes por defecto de los validadores, puedes consultar la documentación online de la API en http://www.symfony-project.org/api/1_2/ Por ejemplo, las opciones, códigos y mensajes de error del validador sfValidatorString
se pueden consultar en http://www.symfony-project.org/api/1_2/sfValidatorString