CakePHP Можно ли использовать проверки в контроллерах, а затем опускать при создании / обновлении?

Я установил несколько проверок в качестве примеров, которые проверяют в контроллере, что запрашиваемая информация сообщения верна. Просто набор простых проверок, таких как minlength, notBlank и т. Д .; и это все работает. Некоторые поля не предназначены для использования при сохранении или обновлении, и я хочу только проверить их в запросе, а затем забыть о них.

Например, при смене пароля в запросе передаются текущий, новый и подтверждающий пароли, и все они должны требоваться, помимо прочего, но если для них задано значение notBlank, это означает, что они находятся в данных, используемых для обновления, но только в новых пароль должен быть там, а остальные два после проверки больше не нужны.

Я знаю, что могу вызывать подмножество проверок в моем контроллере, но я также заметил, что проверки не кажутся специфичными для конкретного сохранения / обновления, они имеют модель в целом, поэтому кажется, что вы не можете просто иметь проверки, которые используется только снаружи сохранить / обновить для запросов.

Есть ли способ сделать это в CakePHP? Я надеялся, что это сработает аналогично 5.x запросам Laravel.

2

Решение

Конечно, вы можете проверить данные, не сохраняя их, а затем сохранить их без проверки. Для проверки используйте метод Model :: validates (), например:

$this->YourModel->set($this->request->data);
if($this->YourModel->validates()){
//Logic if validation succeeded
}else{
//Logic if validation didn't succed
}

Сохранить данные без проверки

$this->YoutModel->save(null,false);

Если вы проверите API CakePHP, то увидите, что метод save может иметь три параметра: данные для сохранения, поля для проверки или логическое значение, указывающее, проверять или нет, и поля для сохранения.
Больше информации здесь CakePHP сохранить метод и здесь Проверка CakePHP в контроллере

2

Другие решения

Других решений пока нет …