首页 / PHP / CakePHP 3 – 更改密码
CakePHP 3 – 更改密码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了CakePHP 3 – 更改密码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2896字,纯文字阅读大概需要5分钟。
内容图文
![CakePHP 3 – 更改密码](/upload/InfoBanner/zyjiaocheng/795/6a299e0696b54f7e888ce826b1221f55.jpg)
我现在开始学习cakephp 3,他是测试版,所以你的手册尚未完成..
我需要更改用户的密码,但它触发了Flash错误.调试变量$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 $user它们是用户表的字段.
[
'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,使用具有您要更新的用户ID的实体
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');
}
大家各位^^
解决方法:
您需要这些字段存在,因此这是预期的行为.根据你的评论,将requirePresence()的第二个参数设置为“false”将不会做任何事情,因为这是一个字符串,如果你想要禁用这个检查,你必须提供一个布尔值,即没有引号.然而,这只会搞乱您的默认验证.
话虽如此,有多种方法可以解决不一定需要的字段的“问题”,一种方法是使用一组单独的验证规则,例如:
public function validationUpdatePassword(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->requirePresence('id')
// you might want to add some actual password validation here
->requirePresence('password')
->notEmpty('password');
return $validator;
}
$user = $this->Users->patchEntity($user, [
'password' => $this->request->data['new-password'],
'id' => 2
], [
'validate' => 'updatePassword'
]);
也可以看看
> http://book.cakephp.org/3.0/en/orm/saving-data.html#validating-data-before-building-entities
> http://book.cakephp.org/3.0/en/core-libraries/validation.html
内容总结
以上是互联网集市为您收集整理的CakePHP 3 – 更改密码全部内容,希望文章能够帮你解决CakePHP 3 – 更改密码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。