yii - filter grideview work with having condition in search function in criteria? -
i have grideview code
$this->widget('zii.widgets.grid.cgridview', array( 'id'=>'lecture-grid', 'dataprovider'=>$model->search(), 'filter'=>$model, 'columns'=>array( array( 'header'=>'name', 'type' => 'raw', // 'name'=>'name', 'value' => 'chtml::link($data->name,yii::app()->baseurl . "/uploads/" . $data->name)', ), array( 'header'=>'pages', 'value'=>'$data->slide_num' ), array( 'header'=>'type', 'value'=>'$data->type' ), array( 'header'=>'size', 'value'=>'$data->size' ), // 'subject.name' array ( 'header'=>'subject', 'value' => 'ucfirst($data->subject->name)', 'filter' => chtml::dropdownlist('lecture[subject_id]', $model->subject_id, chtml::listdata(subject::model()->findall('department_id='.$department_id),'id','name'), array('empty' => '(select)')) ) /* array( 'name'=>'subject', 'type'=>'raw', 'value'=>"subject::model()->find('id=2')->name", 'filter'=>'' ),*/ ), ));
and in model search function
public function search() { // @todo please modify following code remove attributes should not searched. $criteria=new cdbcriteria; $criteria->compare('id',$this->id); $criteria->compare('name',$this->name,true); $criteria->compare('slide_num',$this->slide_num,true); $criteria->compare('type',$this->type,true); $criteria->compare('size',$this->size,true); $criteria->compare('user_id',$this->user_id); $criteria->compare('subject_id',$this->subject_id); return new cactivedataprovider(get_class($this), array( 'criteria' => $criteria, )); /*return new cactivedataprovider($this, array( 'criteria'=>$criteria, ));*/ }
every thing ok target filter works in search function correctly want have condition in criteria $criteria->condition='subject_id=1 or subject_id=3';
when put condition in criteria filter don't work solution having condition in search function , filter work too
public function search() { // @todo please modify following code remove attributes should not searched. $criteria=new cdbcriteria; $criteria->compare('id',$this->id); $criteria->compare('name',$this->name,true); $criteria->compare('slide_num',$this->slide_num,true); $criteria->compare('type',$this->type,true); $criteria->compare('size',$this->size,true); $criteria->compare('user_id',$this->user_id); $criteria->compare('subject_id',$this->subject_id); $criteria->condition='subject_id=1 or subject_id=3'; return new cactivedataprovider(get_class($this), array( 'criteria' => $criteria, )); /*return new cactivedataprovider($this, array( 'criteria'=>$criteria, ));*/ }
instead of $criteria->condition='subject_id=1 or subject_id=3';
try
$criteria->addcondition("subject_id = 1"); $criteria->addcondition("subject_id = 2", "or");
or just
$criteria->addincondition("subject_id", array("1","2"));
Comments
Post a Comment