在Concrete5中编辑页面中的特定用户属性

时间:2015-04-28 11:21:27

标签: attributes custom-attributes concrete5

我的具体5.6.3.1网站已公开注册。我有一个名为&#34的属性;我是一名大使",这是一个在注册和个人资料中显示的复选框。
 我的问题是我需要显示这个特定属性,并且可以在特定页面内进行编辑。

对于Eg:我有一个名为Sing up as Ambassador的页面,当我转到此页面时,我需要显示这个特定的复选框,用户可以启用/禁用它并保存它。(与配置文件编辑相同)。有人帮我吗?

1 个答案:

答案 0 :(得分:2)

注意:这个答案适用于传统的concrete5版本6,其中只有一部分适用于版本7

因此,对于这个问题,我们需要完成一些部分。

  1. 如何确定当前登录的用户?

    $user = new User();
    $user_info = UserInfo::getByID($user->getUserID());
    
  2. 如何获取属性值?

    $user_info->getAttribute('my_attribute_handle');
    
  3. 如何设置属性值?

    $user_info->setAttribute('my_attribute_handle', $value);
    
  4. 那么在我的单页查看方法中,我会有类似的内容:

    public function view()
    {
        $user = new User();
        $some_attribute = false;
        if ($user->isLoggedIn()) {
            $user_info = UserInfo::getByID($user->getUserID());
            $some_attribute = $user_info->getAttribute('some_attribute');
        }
        $this->set('some_attribute', $some_attribute);
    }
    

    然后在我的单页查看文件中,我有:

    <input type='checkbox' value='1' name='some_attribute' <?= $some_attribute ? 'checked' : '' ?> />
    

    我的表单最终提交的地方,我会这样做:

    $user = new User();
    if ($user->isLoggedIn()) {
        $user_info = UserInfo::getByID($user->getUserID());
        $user_info->setAttribute('some_attribute', $_REQUEST['some_attribute'] == 1);
    }