Yii - 关系中的一个页面中的多个CGridView

时间:2012-02-13 20:29:40

标签: php yii

我有以下关系方案:

1 portfolio -> Many Users in each Portfolio -> Each User owns many Products

实体:投资组合,用户,产品

我想要显示的是一页: 1.投资组合的名称 2.用户的标题 3.该用户拥有的所有产品的CGridView

看来,如果没有使用CGridView,您可以适当地填充模型,然后使用foreach循环遍历每个用户关系,然后循环遍历与该用户相关的产品。并为产品和用户创建render_partial视图。

然而,我完全失去了如何使用CGridView完成此任务。

非常感谢任何建议!

1 个答案:

答案 0 :(得分:0)

您想在CGridView中呈现用户的产品吗?

要使用CGridView渲染数据,您需要传入CDataProvider来填充视图。所以问题是:你如何为HAS_MANY关系制作一个CDataProvider?

令人惊讶的是,CActiveDataProvider不支持这种方式的关系。您需要做什么来获取关系并将该数据传递到CArrayDataProvider。假设$user->products关系,您可以这样做:

$dataProvider = new CArrayDataProvider($user->products, array());
$this->widget('zii.widgets.grid.CGridView', array(
  'dataProvider'=>$dataProvider,
  'columns'=>array(
    'id', // your columns here
  ),
));

这不太理想,但它有效。对于这种特定技术,我们要归功于此:http://learnyii.blogspot.com/2010/12/yii-how-to-display-related-hasmany-grid.html