2010-08-28 9 views
9

Quiero validación de error establecido al campo de entrada manualmente en el controlador ejemplo:CakePHP: Error de validación de la forma en conjunto al campo de entrada manualmente en el controlador

if ($remainTime < 30) { 
     ..... set error validation in here (error: limitTime), (error is not in model) 
    } 

otra pregunta: Quiero preguntar: bindModel (en este caso, yo uso bindModel en Behaviors) causará la pérdida de la relación con el otro modelo pero es bindModel causa la pérdida de $ var validate también?

+1

Para Cake 2.0, http://stackoverflow.com/questions/5765236/applying-form-errors-manly hizo el truco para mí. – domsom

Respuesta

15

si los $ validación se define en el modelo, bindModel suele causar Closs de validar $ var.

En cuanto a su pregunta principal; puede configurar/actualizar $ validationErrors unset/del models..eg

($remainTime < 30) { 
    $this->Model->validationErrors['limitTime'] = "time is less than 30"; 
} 
+0

¿no funciona para cakephp 2.6+? – neobie

0

probablemente usted está buscando algo like this

+0

no, quiero establecer la validación de error, en este caso, $ validate == null – meotimdihia

+2

¿Desea invalidar un campo o simplemente mostrar que el formulario en general no es válido? –

13

Esto se puede lograr usando el método de invalidación que marcará el campo que tiene un error: -

$this->Model->invalidate('field_name', 'error message'); 
+1

Esta es probablemente la respuesta más correcta, ya que esto llama al método Validator que hace casi la misma cosa que la respuesta actualmente aceptada. Consulte los documentos de 2.6 API aquí: http://api.cakephp.org/2.6/source-class-ModelValidator.html#278-288 – alecho

+0

no funciona. mensaje de error no aparece. – neobie

+0

@neobie esta es la forma correcta de invalidar un campo en CakePHP 2.x. Si esto no funciona para usted, probablemente esté haciendo algo incorrecto. – drmonkeyninja

0

Desde una muchas cosas han pasado desde que esto ha sido contestada con el fin de transmitir el mensaje correcto que necesita para ponerlo de esta manera:

$this->Model->validationErrors['limitTime'] = array("time is less than 30"); 

Formulario espera variedad de mensajes de error.

0

Si desea invalidar un modelo asociado, se puede usar algo como esto:

$this->Model1->Model2->invalidate('Model2', __("Your validation message")); 

En mi caso se invalida asociado de selección múltiple (HABTM) campo.

Cuestiones relacionadas