Я начал изучать CakePHP 3 теперь он бета-версия, так ваше руководство не является полным еще ..CakePHP 3 - Изменение пароля
мне нужно изменить пароль пользователя, но это вызвало ошибку вспышки. Отладка переменной $ user просто показывает «Обязательное поле», но все поля таблицы имеют значение NULL.
Мой код:
//Create a new Entity
$user = $this->Users->newEntity();
// Set new password and user's id... I'm not doing with session yet, ok?
$user = $this->Users->patchEntity($user, ['password' => $this->request->data['new-password'], 'id' => 2]);
debug($user->errors());
if ($this->Users->save($user)) {
$this->Flash->success('Its Right');
} else {
$this->Flash->error('FAIL');
}
Debuggin $ пользователя Они поле таблицы пользователя.
[
'gym_id' => [
(int) 0 => 'This field is required'
],
'role_id' => [
(int) 0 => 'This field is required'
],
'name' => [
(int) 0 => 'This field is required'
],
'username' => [
(int) 0 => 'This field is required'
],
'stats' => [
(int) 0 => 'This field is required'
]
]
Моего UserModel
public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create')
->add('gym_id', 'valid', ['rule' => 'numeric'])
->requirePresence('gym_id', 'create')
->notEmpty('gym_id')
->add('role_id', 'valid', ['rule' => 'numeric'])
->requirePresence('role_id', 'create')
->notEmpty('role_id')
->requirePresence('name', 'create')
->notEmpty('name')
->requirePresence('username', 'create')
->notEmpty('username')
->requirePresence('password', 'create')
->notEmpty('password')
->add('stats', 'valid', ['rule' => 'numeric'])
->requirePresence('stats', 'create')
->notEmpty('stats');
return $validator;
}
решаемого
Согласно документации patchEntity была создана для того, чтобы использовать существующий объект, создавая новую, я бы создать линию на базы данных, то решение было:
Просто обновите UsersController, используйте сущность с идентификатором пользователя, который вы хотите т обновить
UsersController
$user_data = $this->Users
->find()
->where(['id' => 2])
->first();
$user = $this->Users->patchEntity($user_data,
[
'password' => $this->request->data['new-password']
]);
/*debug($user);
exit();*/
if ($this->Users->save($user)) {
$this->Flash->success('Success, GG EASY');
} else {
$this->Flash->error('FAIL, SurrenderAt20');
}
Thx всех ^^
Попробуйте отладить '$ this-> request-> data' и посмотреть, если возвращает любое значение из этих необходимых полей. – bcesars
Правильно, все значения возвращаются ['current-password' => 'çlk', 'new-password' => '1234', 'confirm-password' => '1234'] – TMoraes
Моя форма - это три поля, текущий -password, new и confirm, я делаю проверку с помощью if clauses и его работы, я просто хочу «изменить» поле пароля – TMoraes