2012-03-31 10 views
0

Ich versuche, mit einem YII CGridview zu arbeiten, um einige Daten anzuzeigen.Yii CGridview nicht filtern

Dies ist die Heimat mein Modell Suchfunktion wie folgt aussieht:

/** 
* 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, 
    )); 
} 

Und so meine Ansicht wie

$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', 
      ), 
     ), 
    )); 

sieht die CGridview Anzeige funktioniert, aber ich kann nicht scheinen, um Filter oben drauf um zu arbeiten. Es sendet den Anruf und ich bekomme keinen Fehler als Antwort, es gibt nur die ganzen ungefilterten Daten wieder zurück.

Irgendwelche Hinweise?

Antwort

6

Und wie genau sieht Ihr Controller aus?

Damit der CGridview-Filter funktioniert, müssen Sie Ihren Controller einchecken, wenn Filter gesetzt sind, und das gefilterte Objekt zurückgeben.

Um zu klären, so etwas wie

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

Hoffnung in die Controller-Aktion gesetzt werden sollte, das hilft

+0

Dank definieren !, vergessen, dass über – SnIpY

0

Sie haben diese Punkte gelten: 1.Specify die globale Variable ($ _ REQUEST) in Funktion des Controllers zum Beispiel

$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. Set Methode Typ in ein Suchformular

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

3.In CGrid sehen Sie die URL wie

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