2012-03-31 2 views
0

Я пытаюсь работать с YII CGridview для отображения некоторых данных.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 работает, но я не могу показаться, чтобы получить фильтруйте поверх нее, чтобы работать. Он отправляет вызов, и я не получаю никаких ошибок в качестве ответа, он просто возвращает все нефильтрованные данные снова.

Любые подсказки?

ответ

6

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

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

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

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

Надеется, что это помогает

+0

Спасибо !, Забыл о том, что – SnIpY

0

Вы должны применять эти пункты: 1.Specify глобальных переменный ($ _ 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.In Cgrid просмотра вы должны определить URL, как

'ajaxUrl'=>Yii::app()->createUrl('controller/function'),