【问题标题】:Yii Framework 1.1.. CGridview filter is not working with my own search function into modelYii Framework 1.1 .. CGridview 过滤器不适用于我自己的搜索功能进入模型
【发布时间】:2025-12-18 09:35:01
【问题描述】:

我将搜索功能克隆到模型中,在控制器中使用它传递给我的视图以使用 CGridview,结果数据正确但过滤器停止工作,我看不出有任何区别,所以必须添加更多其他内容。这是我的代码部分: 型号:

public function searchCargo()
   {
     $criteria=new CDbCriteria;
     $criteria->compare('cargoResp',1,true);
     return new CActiveDataProvider($this, array(
                              'criteria'=>$criteria,
                          ));
   }

控制器

$modRespSearchC=new Responsables('searchCargo');

$modRespSearchC->unsetAttributes();
if(isset($_GET['Responsables']))
   $modRespSearchC->attributes=$_GET['Responsables'];

CGridView:

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'responsables-grid1',
'dataProvider'=>$modRespSearchC->searchCargo(),
'filter'=>$modRespSearchC,

'columns'=>array(
           'apell1Resp',
           'apell2Resp',
           'cargoResp',.....

我错过了什么?? 如何使用过滤器和我自己的功能??

【问题讨论】:

    标签: php yii filter cgridview


    【解决方案1】:

    缺少其他搜索条件。但是,由于它们存在于 search 函数中,您需要做的就是调用该函数,如下所示:

    public function searchCargo() {
        $dataProvider = $this->search();
        $dataProvider->criteria->compare('cargoResp',1,true); 
        return $dataProvider;
    }
    

    此外,除非您在模型的 rules 方法中添加了 searchCargo 的规则,否则您的场景应该是 search,即

    $modRespSearchC=new Responsables('search')
    

    【讨论】: