如何将多个dataProviders传递给CListView

时间:2013-08-26 19:52:13

标签: yii

我在尝试将多个dataProviders传递给Yii中的ClistView时遇到了一些麻烦。这样做的正确方法是什么?

我试过了:

    $this->widget('zii.widgets.CListView', array(


'dataProvider'=>array($dataProvider, $dataProvider2),

我也看过这个What is the best method to merge two PHP objects?。不确定最好的方法是尝试用纯PHP来做,或者如果框架有这方面的选项,我只是错过了它们。

感谢任何帮助。

感谢

强尼

2 个答案:

答案 0 :(得分:2)

最简单的方法是,如果两个模型之间有relation。 然后你可以在itemView中输出它:

echo $data->relationItem; 

// Or if it is a HAS_MANY relation
foreach ($data->relationItems as $i)
    echo $i->something;

不是你追求的是什么?

另一个解决方案可能是遍历您的模型,将您想要的内容挑选到一个新数组中,然后使用CArrayDataProvider将其提供给您的ClistView。

答案 1 :(得分:1)

在这种情况下,我开发了自己的CListView:

class MyClistView extends CListView{

}

CListView需要dataProvider,因此传递包含数据提供程序的ArrayDataProvider并迭代它们,不要忘记实现渲染逻辑。

PS:别忘了查看CBaseListView