CakePHP 2.4.5 - beforeSave() не вызывается

109
11

У меня есть следующий код в модели User:

class User extends AppModel {

public function beforeSave($options = array()) {
if (!empty($this->data['User']['pass'])) {
$passwordHasher = new BlowfishPasswordHasher();
$this->data['User']['pass'] = $passwordHasher->hash($this->data['User']['pass']);
}
return false;
}
}

Когда я создаю новую запись через UserController, используя:

$this->User->create();
$this->User->save(array('pass'=>'test'));

Запись сохраняется в базе данных, а пароль не зашифровывается. Это означает, что beforeSave не выполняется. Может ли кто-нибудь сказать мне, что я делаю неправильно здесь?

спросил(а) 2021-01-19T22:46:32+03:00 6 месяцев назад
1
Решение
109

Я удивлен, что пароль или даже запись будут сохранены в первую очередь, потому что вы возвращаете false в beforeSave().

public function beforeSave($options = array()) {
if (!empty($this->data['User']['pass'])) {
$passwordHasher = new BlowfishPasswordHasher();
$this->data['User']['pass'] = $passwordHasher->hash($this->data['User']['pass']);
}
return true;
}

Ссылка.

ответил(а) 2021-01-19T22:46:32+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема