【问题标题】:yii extension : how to show the user's role at user grid view?yii 扩展:如何在用户网格视图中显示用户的角色?
【发布时间】:2013-11-11 20:02:00
【问题描述】:

Q : 如何在用户网格视图中显示用户的角色?

描述:我正在使用用户和权限扩展。我想在用户/管理员的网格视图中显示用户的角色。并按用户角色过滤。我该怎么办?

这是我的看法

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        array(
            'name' => 'username',
            'type'=>'raw',
            'value' => 'CHtml::link(UHtml::markSearch($data,"username"),array("admin/view","id"=>$data->id))',
        ),
        array(
            'name'=>'email',
            'type'=>'raw',
            'value'=>'CHtml::link(UHtml::markSearch($data,"email"), "mailto:".$data->email)',
        ),
        'create_at',
        'lastvisit_at',
        array(
            'name'=>'status',
            'value'=>'User::itemAlias("UserStatus",$data->status)',
            'filter' => User::itemAlias("UserStatus"),
        ),
        array(
            'class'=>'CButtonColumn',
        ),
    ),
));

这是我的控制器

public function actionIndex()
    {
        $rasdataProvider = new RAssignmentDataProvider();
        $dataProvider=new CActiveDataProvider('User', array(
            'criteria'=>array(
                'condition'=>'status>'.User::STATUS_BANNED,
            ),

            'pagination'=>array(
                'pageSize'=>Yii::app()->controller->module->user_page_size,
            ),
        ));

        $this->render('index',array(
            'dataProvider'=>$dataProvider,
            'rasdataProvider'=>$rasdataProvider,
        ));
    }

更新 #1

这是user.php的关系

    public function relations()
    {
        $relations = Yii::app()->getModule('user')->relations;
        if (!isset($relations['profile']))
            $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');
        return $relations;
    }

【问题讨论】:

标签: php yii yii-extensions


【解决方案1】:

尝试添加 profile.role

'columns'=>array(
    array(
        'name' => 'username',
        'type'=>'raw',
        'value' => 'CHtml::link(UHtml::markSearch($data,"username"),array("admin/view","id"=>$data->id))',
    ),
    'profile.role', // through relation `profile`

【讨论】:

  • 显示错误“未定义属性“Profile.role”。”我更新我的问题。如何添加关系?
  • 你使用用户模型吗?看看 $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');在 mishamx-yii-user-fc69518/models/User.php
  • 已经包含在用户扩展的model/user.php中了。
  • 因为配置文件已定义,我认为profile 的关系是错误的。检查个人资料中的otu字段role
  • 你的意思是在 DB 吗?个人资料 tbl 中没有任何角色字段
【解决方案2】:

下面的例子应该可以解决问题。将其复制到您的列数组中。

array(
    'name'=>'assignments',
    'header'=>Rights::t('core', 'Roles'),
    'type'=>'raw',
    'htmlOptions'=>array('class'=>'role-column'),
    'value'=>'$data->getAssignmentsText(CAuthItem::TYPE_ROLE)',
),

这取自 rights/view/assignment/view.php 文件。

【讨论】:

    猜你喜欢
    • 2015-05-19
    • 2012-09-06
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2021-02-12
    相关资源
    最近更新 更多