Yii - несколько CGridView на одной странице для отношений - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть следующая схема отношений:

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

Субъекты: Портфолио, Пользователь, Продукты

То, что я хотел бы отобразить на одной странице: 1. Наименование портфолио 2. Название пользователя 3. CGridView всех продуктов, принадлежащих этому пользователю

Кажется, что если бы CGridView не использовался, вы бы заполнили свою модель соответствующим образом, а затем использовали бы цикл foreach для циклического прохождения каждого пользовательского отношения, а затем циклически проходили через продукты, связанные с этим пользователем. И создайте представление render_partial для продуктов и для пользователя.

Однако я в полной растерянности относительно того, как этого добиться с помощью CGridView.

Любой совет очень, очень ценится!

1 Ответ

0 голосов
/ 16 февраля 2012

Вы хотите отобразить продукты пользователя в CGridView?

Чтобы визуализировать данные с помощью CGridView, вам нужно передать CDataProvider для заполнения представления. Итак, вопрос: как сделать CDataProvider для отношения HAS_MANY?

Удивительно, но 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...