我在尝试将多个dataProviders传递给Yii中的ClistView时遇到了一些麻烦。这样做的正确方法是什么?
我试过了:
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>array($dataProvider, $dataProvider2),
我也看过这个What is the best method to merge two PHP objects?。不确定最好的方法是尝试用纯PHP来做,或者如果框架有这方面的选项,我只是错过了它们。
感谢任何帮助。
感谢
强尼
答案 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