我正在为Concrete5 5.6.x设置一个包,该包在安装时添加了一组用户属性。其中之一使用了Concrete5附带的图像/文件属性。安装Concrete5时,默认情况下它不会将图像/文件属性类型添加到用户属性中(请参阅下面的屏幕快照)。因此,当我的包添加这个新属性时,它将不会安装,因为它在那里不可用。它不会出错,它只是什么都不做。
在仪表板中,我可以进入并选中复选框以使其可用:
在安装软件包之前告诉人们先这样做是不现实的。必须有一种方法来编程,但我在论坛或任何地方找不到任何东西。
下面是控制器函数的代码,如下所示:
private function addUsersAttr($pkg){
Loader::model('user_attributes');
$img_att = AttributeType::getByHandle('image_file');
// Set to User
$user_att_coll = AttributeKeyCategory::getByHandle('user');
if (!$user_att_coll->allowAttributeSets()) {
$user_att_coll->setAllowAttributeSets(AttributeKeyCategory::ASET_ALLOW_SINGLE);
}
// User Attribute Set & Attributes
$user_att_set = AttributeSet::getByHandle('author_info');
if(!is_object($user_att_set)){
$user_att_set = $user_att_coll->addSet('author_info', t('Author Info'),$pkg);
}
$ai_portrait=CollectionAttributeKey::getByHandle('ui_portrait');
if( !is_object($ai_portrait) ) {
CollectionAttributeKey::add($img_att,
array('akHandle' => 'ui_portrait',
'akName' => t('Portrait Image'),
'akIsSearchable' => false,
'uakProfileEdit' => true,
'uakProfileEditRequired'=> false,
'uakRegisterEdit' => false,
'uakProfileEditRequired'=>false,
'displayOrder'=> '9'
), $pkg)->setAttributeSet($user_att_set);
}
}
谢谢
发布于 2016-06-06 15:46:17
在您的控制器中,您使用的是CollectionAttributeKey,但是在您的语句中,您说您正在尝试添加一个用户属性。如果要添加用户属性,则需要使用UserAttributeKey。
https://stackoverflow.com/questions/33445824
复制相似问题