Как сортировать и фильтровать с флажком в YII - PullRequest
0 голосов
/ 15 мая 2018

У меня есть gridview с фильтрами + флажки, как показано ниже: filters+checkboxes

Gridview фильтруется, когда флажок установлен и работает. V хорошо, но когда я нажимаю на столбецИмя для сортировки столбцов Сортировка берет под контроль фильтры, и они просто перестают работать ...

Я не могу даже снять флажки и изменить значения во входах фильтров, поскольку "сортировка" сохраняет значения до того, как я щелкнул имя столбца.

Есть ли способ исправить это?

Моя функция поиска в модели выглядит следующим образом:

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 голосов
/ 08 июня 2018

Проблема была в конфигурации ... добавление строки:

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

решает проблему.

0 голосов
/ 06 июня 2018

Пожалуйста, отладьте код, который вы видите в резервной копии при щелчке, чтобы отсортировать по значению и добавить его в свой код.Например, запрос пришел как $requestusr['xyz_name_filter_ASC']

И добавьте это в свой код

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

В вашем коде у вас нет заказа

...