如何在yii的权限模块中添加过滤器?

时间:2013-08-19 05:05:50

标签: yii

我想在yii的权限模块的cgridview中添加过滤器。

这是权利模块的cgridview

<?php $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'template'=>"{items}\n{pager}",
        'emptyText'=>Rights::t('core', 'No users found.'),
        'htmlOptions'=>array('class'=>'grid-view assignment-table'),
        //'filter'=>$dataProvider,
        'columns'=>array(
            array(
                'name'=>'name',
                'header'=>Rights::t('core', 'Name'),
                'type'=>'raw',
                'htmlOptions'=>array('class'=>'name-column'),
                'value'=>'$data->getAssignmentNameLink()',
                'filter'=>'name',
            ),
            array(
                'name'=>'assignments',
                'header'=>Rights::t('core', 'Roles'),
                'type'=>'raw',
                'htmlOptions'=>array('class'=>'role-column'),
                'value'=>'$data->getAssignmentsText(CAuthItem::TYPE_ROLE)',
            ),
            /*
            array(
                'name'=>'assignments',
                'header'=>Rights::t('core', 'Tasks'),
                'type'=>'raw',
                'htmlOptions'=>array('class'=>'task-column'),
                'value'=>'$data->getAssignmentsText(CAuthItem::TYPE_TASK)',
            ),
            array(
                'name'=>'assignments',
                'header'=>Rights::t('core', 'Operations'),
                'type'=>'raw',
                'htmlOptions'=>array('class'=>'operation-column'),
                'value'=>'$data->getAssignmentsText(CAuthItem::TYPE_OPERATION)',
            ),
            */
        )
    )); ?>

这是assignmentcontroller的动作视图

public function actionView()
    {
        // Create a data provider for listing the users
        $dataProvider = new RAssignmentDataProvider(array(
            'pagination'=>array(
                'pageSize'=>50,
            ),
        ));

        // Render the view
        $this->render('view', array(
            'dataProvider'=>$dataProvider,
        ));
    }

如何在权限模块的cgridview中添加过滤器?

1 个答案:

答案 0 :(得分:0)

如果我确切地问你的问题,你试图在CGridView中使用过滤器并且它不起作用。 如果这是你的问题,那么答案是:

在你的行动中

public function actionView()
{
  $model=new RAssignmentDataProvider('search');
  $model->unsetAttributes();  // clear any default values
    if(isset($_GET['RAssignmentDataProvider']))
        $model->attributes=$_GET['RAssignmentDataProvider'];

    $this->render('view',array(
        'model'=>$model,
    ));
}
在您的视图中

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$model->search(),
     ...


 ?>

这样当您使用过滤器时,它会调用搜索功能并使用过滤后的值更新CGridView

注意:如果您查看由Gii生成的管理员操作和管理员视图,您将找到上面相同的代码。