【发布时间】:2014-01-08 14:11:48
【问题描述】:
所以,我对 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 和 filter 由不同的模型提供。
这是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,
));
}
所以,在我更改了 dataProvider 后,CgridView 过滤器停止工作
我错过了什么?我知道在Proposta::model()->search() 函数中,有一组标准比较,例如$criteria->compare('id',$this->id)。
解决此问题的最佳方法是什么?改变我的过滤器?在listPropostas()函数上添加比较?
提前感谢!
干杯
【问题讨论】: