我有一个UsersController和edit.ctp视图。当我浏览/users/edit/1时,我看到密码字段填充了*****(在User.php实体中使用DefaultPasswordHasher的哈希值填充)。我的UsersTable.php需要密码。因此,我可以尝试:
因为在我的UsersTable.php文件中有以下内容:
如果我尝试从控制器中留空,就会出现错误;如果我尝试填写实际密码,它会再次哈希。我该如何编辑任何用户而不更改其密码?我可以在模型中设置还是需要将密码设置为非必需的?管理员不需要查看真实密码,我已经对密码确认进行了验证(已经起作用)。在add.ctp中没有问题,因为默认值始终为空白。我只想在填写密码字段时才更改密码。我认为“密码”需要在模型中为“必需”,因为所有用户都需要密码,这就是为什么我试图将其与控制器中的验证保持一定距离的原因。验证说“在创建时”,但即使在更新时也是必需的,可能存在错误吗?我的Cake版本是3.4.4。预先感谢您。
unset($user->password); // in edit() from UsersController.php
需要在edit.ctp中设置[require => false]
保存时,我得到以下结果
The user could not be saved. Please, try again.
因为在我的UsersTable.php文件中有以下内容:
$validator
->requirePresence('password', 'create')
->notEmpty('password');
如果我尝试从控制器中留空,就会出现错误;如果我尝试填写实际密码,它会再次哈希。我该如何编辑任何用户而不更改其密码?我可以在模型中设置还是需要将密码设置为非必需的?管理员不需要查看真实密码,我已经对密码确认进行了验证(已经起作用)。在add.ctp中没有问题,因为默认值始终为空白。我只想在填写密码字段时才更改密码。我认为“密码”需要在模型中为“必需”,因为所有用户都需要密码,这就是为什么我试图将其与控制器中的验证保持一定距离的原因。验证说“在创建时”,但即使在更新时也是必需的,可能存在错误吗?我的Cake版本是3.4.4。预先感谢您。