Validación y mensajes de error en CakePHP
2008-08-07 22:26:31-05
Desarrollo
Una de las cosas más chidas de CakePHP es que hace la validación del lado del servidor supersencilla, validar es de las cosas que me dan más hueva en los desarrollos. Sin embargo tenía la duda de porque había dos mensajes de error, uno en el helper (en la vista) y otro en el array $validate del modelo.
Googleando un poco veo que en realidad el mensaje de error del helper no es necesario, sólo hay que poner el mensaje en el modelo.
1) En la función beforeFilter() del archivo APP/app_controller.php debemos indicar el lenguaje que queremos:
Configure::write('Config.language', 'es'); // <-- para mensajes en español
2) En el formulario dela vista agregamos el helper a la entrada del formualrio que queremos validar, en este caso el campo title del modelo Entry:
echo $form->error('Entry.title');
3) En nuestro modelo definimos la regla de validación:
public $validate = array(
'title' => array(
'rule' => array('minLength', 4),
'message' => 'Title must be at least four characters long',
'allowEmpty' => false,
'required' => true
)
);
4) Ahora la traducción al español en el archivo APP/locale/spa/LC_MESSAGE/default.po, notese que el msgid debe ser idéntico al mensaje puesto en el array validate.
msgid "Title must be at least four characters long"
msgstr "El título debe tener al menos cuatro letras"
5) Y por último hacemos un overriding del método invalidate() del modelo y ponemos este método en APP/app_model.php:
public function invalidate($field, $value = true)
{
return parent::invalidate($field, __($value, true));
}
Y con eso ya tenemos los mensajes de validación en español en toda nuestra aplicación.
Googleando un poco veo que en realidad el mensaje de error del helper no es necesario, sólo hay que poner el mensaje en el modelo.
1) En la función beforeFilter() del archivo APP/app_controller.php debemos indicar el lenguaje que queremos:
Configure::write('Config.language', 'es'); // <-- para mensajes en español
2) En el formulario dela vista agregamos el helper a la entrada del formualrio que queremos validar, en este caso el campo title del modelo Entry:
echo $form->error('Entry.title');
3) En nuestro modelo definimos la regla de validación:
public $validate = array(
'title' => array(
'rule' => array('minLength', 4),
'message' => 'Title must be at least four characters long',
'allowEmpty' => false,
'required' => true
)
);
4) Ahora la traducción al español en el archivo APP/locale/spa/LC_MESSAGE/default.po, notese que el msgid debe ser idéntico al mensaje puesto en el array validate.
msgid "Title must be at least four characters long"
msgstr "El título debe tener al menos cuatro letras"
5) Y por último hacemos un overriding del método invalidate() del modelo y ponemos este método en APP/app_model.php:
public function invalidate($field, $value = true)
{
return parent::invalidate($field, __($value, true));
}
Y con eso ya tenemos los mensajes de validación en español en toda nuestra aplicación.
Permalink: http://www.mononeurona.org/users/entry/aarkerio/1486
Comentblogs:










