Php Concrete5.6.x-在包控制器中以编程方式设置属性类型关联
我正在为Concrete55.6.x设置一个包,它在安装时添加了一系列用户属性。其中一个使用Concrete5附带的image/file属性。安装Concrete5时,默认情况下不会将图像/文件属性类型添加到用户属性(请参见下面的屏幕截图)。因此,当我的包添加这个新属性时,它不会安装,因为它在那里不可用。它不会出错,只是什么也不做 在仪表板中,我可以进入并选中复选框以使其可用: 在安装软件包之前,让人们先这样做是不现实的。一定有一种方法可以通过编程实现,但我在论坛或任何地方都找不到任何东西 以下是控制器功能现在的代码:Php Concrete5.6.x-在包控制器中以编程方式设置属性类型关联,php,model-view-controller,concrete5,Php,Model View Controller,Concrete5,我正在为Concrete55.6.x设置一个包,它在安装时添加了一系列用户属性。其中一个使用Concrete5附带的image/file属性。安装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);
}
}
谢谢在您的控制器中,您正在使用CollectionAttributeKey,但在您的声明中,您说您正在尝试添加用户属性。如果要添加用户属性,则需要使用UserAttributeKey