cakephp, подтвердите ошибку
Я обновил некоторые данные, вставив их в поля и нажав кнопку обновления, но validates()
всегда возвращает ложь. Все поля заполнены правильно, и он не отображает никаких сообщений об ошибках - validates()
просто возвращает ложь. Зачем?
$this->Post->set($this->data);
if ($this->Post->validates())
echo 'ok';
else
echo 'error';
1 ответ
Проверьте этот пост на несколько советов. Соответствующие даны здесь.
Сохранить () не работает! Иногда случается так, что
save()
терпит неудачу без какой-либо очевидной причины. Ваш массив данных выглядит нормально, и вы правильно построили форму и т. Д. И т. П., Но запрос не был выполнен. Вполне возможно, что сохранение не удалось из-за ошибок проверки. Возможно, вы обновляете некоторую модель, и, хотя текущие поля в форме проходят проверку, есть вероятность, что некоторые "другие" приводят к сбою правил проверки. Простой (и полезный) способ увидеть, что происходит с проверкой, это сделатьpr($this->validationErrors);
по вашему мнению. Используя этот метод, вы точно увидите, что происходит с проверкой вашей модели. Другой вариант - пройтиfalse
в качестве второго параметраsave();
для того, чтобы отключить проверку. Тем не менее, последний метод не дает большой подсказки и не должен использоваться для решения проблемы, а намеренно избегать проверки.Сохранить () по-прежнему не работает! У тебя есть
beforeSave();
в вашей модели или модели приложения? Всегда перепроверяйте этот метод и, что еще более важно, убедитесь, что он возвращаетtrue
,Проверка при создании или обновлении CakePHP имеет
'on'
ключ, который будет использоваться в вашем$validate
массив. Он позволяет указать, следует ли применять правило при создании новой записи или при обновлении существующей записи. Например, если вы хотите проверять уникальный адрес электронной почты только при создании новой учетной записи пользователя, вы должны добавить'on' => 'create'
на ваш$validate
массив. Поэтому это правило будет игнорироваться при обновлении / редактировании какого-либо пользователя.