所以,我對Yii有點新鮮。我有一個CGridView看起來像:Yii - CgridView過濾器在更改數據提供器後停止工作
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'proposta-grid',
'dataProvider'=>Yii::app()->session['user']->listPropostas(),
'filter'=>$model,
...
...
我改變了dataProvider
從$model->search()
到User::model()->listPropostas()
。 dataProvider和過濾器由不同的模型提供。
這是listPropostas
方法,工作正常的代碼:
public function listPropostas()
{
$criteria = new CDbCriteria;
$arrFiliais = array();
$arrPropostas = array();
$arrGrupos = $this->gruposId();
foreach ($arrGrupos as $grupo) {
$objGrupo = GrupoDeAnalistas::model()->findByPk($grupo['id']);
foreach ($objGrupo->listFiliais() as $arr) {
if (!in_array($arr['id'], $arrFiliais)) {
array_push($arrFiliais, $arr['id']);
}
}
}
foreach ($arrFiliais as $arrFilial) {
$objFilial = Filial::model()->findByPk($arrFilial['id']);
foreach ($objFilial->listPropostas($this) as $propId) {
if (!in_array($propId['id'], $arrPropostas)) {
array_push($arrPropostas, $propId['id']);
}
}
}
$proposta = new Proposta;
$criteria->addInCondition("id", $arrPropostas);
return new CActiveDataProvider($proposta, array(
'criteria' => $criteria,
));
}
於是,我改變了數據提供程序之後CgridView過濾器停止工作
我缺少什麼?我知道在Proposta::model()->search()
函數中,有幾組標準比較,如$criteria->compare('id',$this->id)
。
解決此問題的最佳方法是什麼?更改我的過濾器?在listPropostas()
函數上添加比較?
預先讚賞!
乾杯
感謝您的幫助!我會嘗試的! –