在Concrete5版本8中以编程方式添加用户和属性

时间:2017-06-26 12:22:08

标签: concrete5 concrete5-8.x

您好我最近关注了一些文档,以编程方式从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并自动循环以将正确的值应用于相应的属性,无论它是空白还是已填充。

1 个答案:

答案 0 :(得分:1)

成功添加新用户后,create()方法将返回UserInfo对象(Concrete \ Core \ User \ 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