Yii CGridview не фильтрует - PullRequest
       7

Yii CGridview не фильтрует

0 голосов
/ 31 марта 2012

Я пытаюсь работать с YII CGridview, чтобы отобразить некоторые данные.

Это моя функция поиска моей модели выглядит так:

/**
 * Retrieves a list of models based on the current search/filter conditions.
 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
 */
public function search()
{
    $criteria=new CDbCriteria;
    $criteria->compare('ip',$this->ip,true);
    $criteria->compare('first_use',$this->first_use,true);
    $criteria->compare('last_use',$this->last_use);
    $criteria->compare('memberid',$this->memberid);
    $criteria->compare('countryid',$this->countryid);

    return new CActiveDataProvider(get_class($this), array(
        'criteria'=>$criteria,
    ));
}

И вот так выглядит мой видкак

$this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'iplog-grid',
        'dataProvider'=>$oIPLog->search(),
        'filter'=>$oIPLog,
        'summaryText' => 'showing you {start} - {end} of {count} logged Ips',
        'columns'=>array(
            array(
                'name'=>'ip',
                'type'=>'raw',
            ),
            array(
                'name'=>'first_use',
                'type'=>'datetime',
            ),
            array(
                'name'=>'last_use',
                'type'=>'datetime',
            ),
        ),
    ));

Отображение CGridview работает, но я не могу заставить фильтр работать поверх него.Он отправляет вызов, и я не получаю никакой ошибки в качестве ответа, он просто снова возвращает все нефильтрованные данные ..

Есть какие-нибудь подсказки?

Ответы [ 2 ]

6 голосов
/ 01 апреля 2012

А как именно выглядит ваш контроллер?

Чтобы фильтр CGridview работал, необходимо проверить в контроллере, установлены ли какие-либо фильтры, а затем вернуть отфильтрованный объект.

Чтобы уточнить, что-то подобное должно быть помещено в действие вашего контроллера

$oObject = new Object('search');
if (isset($_GET['Object'])) {
    $oObject->attributes = $_GET['Object'];
}

Надеюсь, это поможет

0 голосов
/ 27 марта 2014

Вы должны применить эти пункты: 1. Укажите глобальную переменную ($ _ REQUEST) в функции вашего контроллера. например

$model = new User('search');

      $model->unsetAttributes();  // clear any default values

        if (isset($_REQUEST['User'])){
            $model->attributes = $_REQUEST['User'];

          }
            $this->render('admin', array(
            'model' => $model,

        ));
  1. Установить тип метода в форме поиска

    <?php $form=$this->beginWidget('CActiveForm', array(
    'action'=>Yii::app()->createUrl('user/admin'),
    'method'=>'POST',
    )); ?>
    

3.В представлении Cgrid вы должны определить URL как

 'ajaxUrl'=>Yii::app()->createUrl( 'controller/function' ), 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...