首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Concrete5 5.6.x -在包控制器中以编程方式设置属性类型关联

Concrete5 5.6.x -在包控制器中以编程方式设置属性类型关联
EN

Stack Overflow用户
提问于 2015-10-30 22:31:06
回答 1查看 89关注 0票数 0

我正在为Concrete5 5.6.x设置一个包,该包在安装时添加了一组用户属性。其中之一使用了Concrete5附带的图像/文件属性。安装Concrete5时,默认情况下它不会将图像/文件属性类型添加到用户属性中(请参阅下面的屏幕快照)。因此,当我的包添加这个新属性时,它将不会安装,因为它在那里不可用。它不会出错,它只是什么都不做。

在仪表板中,我可以进入并选中复选框以使其可用:

在安装软件包之前告诉人们先这样做是不现实的。必须有一种方法来编程,但我在论坛或任何地方找不到任何东西。

下面是控制器函数的代码,如下所示:

代码语言:javascript
运行
复制
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); 
    }

}

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-06-06 15:46:17

在您的控制器中,您使用的是CollectionAttributeKey,但是在您的语句中,您说您正在尝试添加一个用户属性。如果要添加用户属性,则需要使用UserAttributeKey。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33445824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档