Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Concrete5.6.x-在包控制器中以编程方式设置属性类型关联_Php_Model View Controller_Concrete5 - Fatal编程技术网

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

Php Concrete5.6.x-在包控制器中以编程方式设置属性类型关联,php,model-view-controller,concrete5,Php,Model View Controller,Concrete5,我正在为Concrete55.6.x设置一个包,它在安装时添加了一系列用户属性。其中一个使用Concrete5附带的image/file属性。安装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