如何在yii中使用复选框进行排序和过滤

How to sort and filter with checkbox in yii

我的 gridview 带有过滤器+复选框,如下所示:

当复选框被选中时 Gridview 被过滤并且它的工作非常好但是当我点击列名对列排序时排序正在控制过滤器并且它们只是停止工作...

我什至无法取消选中复选框并更改过滤器输入中的值,因为 "sort" 保留了我单击列名称之前的值。

有什么办法可以修复吗?

我在模型中的搜索功能如下所示:

public function Search(): CActiveDataProvider
{
    $request = Yii::app()->request;
    $requestusr = $request->getParam('Users');

    $this->xyz_name_filter = isset($requestusr['xyz_name_filter']) ? $requestusr['xyz_name_filter'] : 1;
    $this->xyz_surname_filter = isset($requestusr['xyz_surname_filter']) ? $requestusr['xyz_surname_filter'] : 1;
    $this->xyz_street_filter = isset($requestusr['xyz_street_filter']) ? $requestusr['xyz_street_filter'] : 0;

    $criteria = new CDbCriteria();
    $this->xyz_name_filter == 1 ? $criteria->compare('t.xyz_name', $this->xyz_name, true) : null;
    $this->xyz_surname_filter == 1 ? $criteria->compare('t.xyz_surname', $this->xyz_surname, true) : null;
    $this->xyz_street_filter == 1 ? $criteria->compare('t.xyz_street', $this->xyz_street, true) : null;

    return new CActiveDataProvider(
        $this, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageSize' => $this->pagesize,
            ),
        )
    );
}

感谢回复。

请调试您在单击按某些值排序时在后台看到的代码,并将其添加到您的代码中。 例如,请求为 $requestusr['xyz_name_filter_ASC']

并将其添加到您的代码中

 $this->xyz_name_filter_ASC == 1 ? $criteria->order = 't.xyz_name ASC';

在你的代码中你没有任何订单

问题出在配置... 添加行:

'admin/<lang:[a-z]{2}>/<controller:\w+>/<action:\w+>'=>'admin/<lang>/<controller>/<action>'

解决问题。