【问题标题】:CGridview Filters do not seem to be workingCGridview 过滤器似乎不起作用
【发布时间】:2012-12-17 17:15:23
【问题描述】:

有人可以帮我处理过滤器吗,他们似乎没有从数据库中获取数据。

具有 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}'
    ),
)
));

为模型建模,我试图打印出我正在过滤的搜索元素之一,而不是任何显示

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

控制器没有从 $_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,
    ));
}

我不明白为什么这个过滤器不起作用,请帮忙。

【问题讨论】:

    标签: filter yii cgridview


    【解决方案1】:

    确保您要过滤的每个字段在模型规则中都设置为安全。

    public function rules(){
      return array(
        ..
        array('bt_number,sign,fmbuys','safe','on'=>'search'),
      );
    }
    

    属性需要设置为保险箱才能使该行起作用:

    $model->attributes=$_GET['BrokerTrades'];

    只需在第一个字符串中包含您要搜索的所有属性,用逗号分隔。

    看看这是否有帮助。

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多