2010-08-28 12 views
9

voglio impostare la convalida di errore per campo di inserimento manualmente controller esempio:cakePHP: come set di validazione errore di campo di input manualmente controller

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

altra domanda: voglio chiedere: bindModel (in In questo caso, utilizzo bindModel nei Behaviors) causerà la perdita di relazione con l'altro modello ma bindModel causa anche la perdita di $ var?

+1

Per Cake 2.0, http://stackoverflow.com/questions/5765236/applying-form-errors-manualmente ha fatto il trucco per me. – domsom

risposta

15

se il $ validate è definito nel modello, bindModel non causerà Closs di $ var validate.

Per quanto riguarda la domanda principale; è possibile inserire/disinserire/aggiornamento $ validationErrors del models..eg

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

non funziona per cakephp 2.6+? – neobie

0

Probabilmente siete alla ricerca di qualcosa di like this

+0

no, voglio impostare la convalida dell'errore, in questo caso, $ validate == null – meotimdihia

+2

Vuoi invalidare un campo, o solo per mostrare che il modulo in generale non è valido? –

13

Ciò può essere ottenuto utilizzando il metodo invalidate che contrassegnerà il campo come avere un errore: -

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

Questa è probabilmente la risposta più corretta in quanto chiama il metodo Validator che fa quasi tutto la risposta attualmente accettata. Vedere i documenti API 2.6 qui: http://api.cakephp.org/2.6/source-class-ModelValidator.html#278-288 – alecho

+0

non funziona. messaggio di errore non viene visualizzato. – neobie

+0

@neobie questo è il modo corretto per invalidare un campo in CakePHP 2.x. Se questo non funziona, probabilmente stai facendo qualcos'altro. – drmonkeyninja

0

Dal momento che un molto è passato da quando questa è stata risolta in modo da passare il messaggio corretto è necessario mettere in questo modo:

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

Modulo si aspetta serie di messaggi di errore.

0

Se si vuole invalidare un modello associato, è possibile utilizzare qualcosa di simile:

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

Nel mio caso è invalida associato di selezione multipla (HABTM) campo.

Problemi correlati