0

嗨,我最近关注了一些文档,以编程方式从 csv 文件创建新用户。根据 Concrete5 docs/api,有一个名为 getByID( $uID ) 的方法,但此后该方法已被弃用!

我正在创建一个新用户,如下所示:

$userRegistration = Core::make('user/registration');

$file = fopen("test-users.csv","r");
while (($data = fgetcsv($file)) !== FALSE) {
echo "email address " . $data[0];
$userRegistration->create([
'uName' => $data[0],
'uPassword' => $data[1],
'uEmail' => $data[2],
'uIsValidated' => true,
]);
}

但是,如果我想为现有的非核心属性添加一个值,例如让我们将其称为 user_county,那么在以编程方式添加用户之后我将如何更改它?我可能还需要对多个用户属性执行此操作,因此值需要来自 CSV 并自动循环以将正确的值应用于相应的属性,无论它是空白还是填充。

4

1 回答 1

1

成功添加新用户后,该create()方法将返回一个对象(Concrete\Core\User\UserInfo)。UserInfo使用返回的UserInfo对象,您可以使用该setAttribute()方法设置自定义用户属性。

确保您已经创建了客户用户属性,并在设置之前检查它是否可用,否则设置它会引发错误。我相信您可以使用Concrete\Core\Attribute\Key\UserKey::getByHandle('my_user_attribute')并查看它是否返回对象来执行此操作。

create() 方法在 RegistrationService 类中:

https://github.com/concrete5/concrete5/blob/develop/concrete/src/User/RegistrationService.php#L51-L140

于 2017-06-27T13:22:43.123 回答