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

时间:2018-05-15 10:45:47

标签: php yii cgridview

我有gridview with filters +复选框,如下所示: filters+checkboxes

当复选框被选中时,网格视图被过滤,其工作效果不错,但当我点击列名称对列进行排序时,排序正在控制过滤器并且它们只是停止工作......

我甚至无法取消选中复选框并更改过滤器输入中的值,因为“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,
            ),
        )
    );
}

感谢您的回复。

2 个答案:

答案 0 :(得分:0)

请在单击以使用某个值排序时将您在备份中看到的代码调试并将其添加到代码中。 例如,请求来自$requestusr['xyz_name_filter_ASC']

并在您的代码中添加此内容

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

在您的代码中,您没有任何订单

答案 1 :(得分:0)

配置中的问题... 添加行:

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

解决了这个问题。