cakePHP: как установить проверку ошибок для поля ввода вручную в контроллере - PullRequest
9 голосов
/ 28 августа 2010

Я хочу установить проверку ошибок для ввода поля вручную в примере контроллера:

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

другой вопрос : я хочу спросить: bindModel (в этом случае я использую bindModel в Поведениях) приведет к потере связи с другой моделью, но является ли bindModel причиной потери $ var validate?

Ответы [ 5 ]

15 голосов
/ 25 ноября 2010

, если в модели определен $ validate, bindModel не приведет к закрытию переменной $ var validate.

Что касается вас, основной вопрос; Вы можете установить / сбросить / обновить $ validationErrors моделей .. например

($remainTime < 30) {
   $this->Model->validationErrors['limitTime'] = "time is less than 30";
}
15 голосов
/ 11 июля 2013

Этого можно достичь, используя метод invalidate, который помечает поле как имеющее ошибку: -

$this->Model->invalidate('field_name', 'error message');
1 голос
/ 12 декабря 2014

Если вы хотите сделать недействительной ассоциированную модель, вы можете использовать что-то вроде этого:

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

В моем случае это делает недействительным связанное поле выбора нескольких (HABTM) .

0 голосов
/ 09 марта 2014

Поскольку с момента получения ответа на него прошло много времени, необходимо передать правильное сообщение:

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

Форма ожидает массив сообщений об ошибках.

0 голосов
/ 28 августа 2010

Возможно, вы ищете что-то , как это

...