我正在尝试通过他们在 drupal 9 模块中的用户名更改给定用户的密码,但我不断收到此错误:
Error: Call to a member function setPassword() on array in _password_change()
这是我正在使用的功能:
$userName = 'user1';
$password = 'Password1';
$nid = '1';
function _password_change($userName, $password) {
$user_storage = \Drupal::EntityTypeManager()->getStorage('user');
$user = $user_storage->loadByProperties(['name' => $userName]);
$user->setPassword($password);
$user->save();
}
如果我使用$user = $user_storage->load($nid);
而不是$user = $user_storage->loadByProperties(['name' => $userName]);
代码运行良好并且不幸地成功应用了密码,那么给定的信息将是用户名而不是实体 ID。
,$userName
和$password
手动$nid
设置用于测试建议。
对于我可以告诉我是否使用加载 ID 调用它,我会返回一个对象,但如果我使用 loadByProperties 调用它,我会返回和数组,因此它不能应用 setPassword 函数。
将用户名作为对象加载实体对象并能够应用新密码的方法是什么?