Reputation: 19
Can some one please help me with my filters, they do not seem to be getting data from the database.
View that has the CGridview
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'enablePagination'=>true,
'pager'=>array(
'maxButtonCount'=>'7',
),
'columns'=>array(
array(
'name'=>'bt_number',
'type'=>'raw',
'value'=>$model->bt_number,
),
array(
'name'=>'date_time',
'type'=>'raw',
'value'=>$model->date_time,
),
array(
'name'=>'broker',
'type'=>'raw',
'value'=>$model->broker,
'filter'=>Yii::app()->params['brokers'],
),
array(
'class'=>'CButtonColumn',
'template'=>'{view}{update}'
),
)
));
Model the model, I have tried to print out one of the search elements I wa filtering on not nothing display
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
echo "booker ".$this->broker;// exit;
//above only displays booker there is nothing in $this->broker
$criteria=new CDbCriteria;
$criteria->compare('bt_number',$this->bt_number);
$criteria->compare('sign',$this->sign,true);
$criteria->compare('fm_buys',$this->fm_buys,true);
$criteria->compare('fm_buys_amt',$this->fm_buys_amt,true);
$criteria->compare('against',$this->against,true);
$criteria->compare('bt_sett_date',$this->bt_sett_date,true);
$criteria->compare('bt_order_type',$this->bt_order_type,true);
$criteria->compare('date_time',$this->date_time,true);
$criteria->compare('dealer',$this->dealer,true);
$criteria->compare('rate',$this->rate,true);
$criteria->compare('broker',$this->broker,true);
$criteria->compare('recapped',$this->recapped,true);
$criteria->compare('settled',$this->settled,true);
$criteria->compare('sett_date',$this->sett_date,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Controller is not getting anything from the $_GET var
public function actionIndex()
{
$model=new BrokerTrades('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['BrokerTrades']))
$model->attributes=$_GET['BrokerTrades'];
print_r($_GET) ;
$this->render('index',array(
'model'=>$model,
));
}
I can not see why this filter is not work please help.
Upvotes: 1
Views: 3147
Reputation: 5187
Make sure each of the fields you want to filter is set to safe in the rules of the model.
public function rules(){
return array(
..
array('bt_number,sign,fmbuys','safe','on'=>'search'),
);
}
The attributes need to be set the safe in order for this line to function:
$model->attributes=$_GET['BrokerTrades'];
Just include all the attributes you want to search by in the first string, separated by commas.
See if that helps at all.
Upvotes: 2