【问题标题】:Yii2 Gridview widget make dropdown filter option selectedYii2 Gridview 小部件使下拉过滤器选项被选中
【发布时间】:2018-10-15 10:24:51
【问题描述】:

您好,我正在使用 yii2 Gridview,我的 gridcolumn 中有一个过滤器下拉选项,在选择下拉选项时,我的网格结果会正确更改,但我需要保留选定的下拉选项过滤器,请参阅下面的代码,

$func = Model::get_rolename();

 GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchmodel,
            'rowOptions' => function($model) {

                return ['data-tt-id' => $model['UserId'], 'data-tt-parent-id' => $model['ManagerId']];
            },
            'options' => ['id' => 'sup_review'],
            'columns' => [

                [
                    'label' => 'First name',
                    'sortLinkOptions' => ['class' => 'desc'],
                    'format' => 'html',
                    'attribute' => 'FirstName',
                    'filterInputOptions' => [
                        'placeholder' => 'Search Name..',
                        'class' => 'form-control',
                    ],
                    'value' => function ($model, $key, $index, $column) {
                        return $model['FirstName'];
                    },
                ],
                [
                    'label' => 'Role test',
                    'sortLinkOptions' => ['class' => 'desc'],
                    'format' => 'ntext',
                    'attribute' => 'ClientId',
                    'filter' => $func,
                    'value' => function ($model, $key, $index, $column) {
                        return $model['RoleName'];
                    },
                ],

                [
                    'label' => 'Actions',
                    'content' => function($model) use ($from, $to) {
                        return Html::a('<span class="btn btn-sm btn-primary">View</span>', Yii::$app->request->baseUrl . '/controller/function/?userid=' . $model['UserId'] . '&from=' . $from . '&to=' . $to, [
                                    'title' => Yii::t('app', 'View'),
                                    'data-pjax' => '0',
                        ]);
                    }
                ],
            ],
        ]);

提前致谢:)

【问题讨论】:

    标签: php yii2


    【解决方案1】:

    是的。那是因为 yii2 rbac 中的角色存储在 items 中,并且有一个单独的表正在为用户分配角色。您的代码太紧,无法猜测后面发生了什么……但我猜您正在制作用户索引?无论如何:

    • 您需要Yii::$app-&gt;authManager-&gt;getRoles(); 来获取角色数组。
    • 您需要在 searchModel 中加入 auth_assignment 表

      if($this->role){ $query->join('LEFT JOIN','auth_assignment','auth_assignment.user_id = client_id') ->andFilterWhere(['auth_assignment.item_name' => $this->role]); }

    • 确保您的 searchModel 包含角色并且该属性是安全的。

    【讨论】:

    • 我正在使用自定义角色表来获取基于用户 ID 的角色名称,是的,我有带有角色属性的 searchmodel 是安全的。
    • 现在我在过滤参数 'filter' => Html::activeDropDownList($searchmodel, 'ClientId',$func,['class'=>'form-control',' prompt' => 'Select Role']),这个选择角色后选择回默认提示查询不重置为什么?
    • 我不太喜欢给 HTML 过滤。你可以给这个属性一个数组,它会生成一个下拉列表。试试 filter => \yii\helpers\ArrayHelper::map(\Yii::$app->authManager->getRoles(),'name','name')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多