CGridView, как добавить строки с категориями?

Насколько понимаю надо будет писать свое расширение таки CGridView, но все-таки, может кто сталкивался?

Есть такая задача:

CGridView:

Строка титла+сортировка

Категория: BMW (возможность свернуть категорию)

  1. Строка описания, к примеру, 5 полей;

  2. Строка описания;

  3. Строка описания;

Категория: Audi (возможность свернуть категорию)

  1. Строка описания;

  2. Строка описания;

  3. Строка описания;

Т.е. соответственно это что-то похожее на Nested насколько понимаю, но насколько правильно для этого использовать CGridView, да и вообще интересно, насколько корректно использовать этот грид для отображения информации в фронтенде? Или лучше использовать для этого собственное отображение какое-то?

Сам спросил - сам ответил.

Блин, чем больше работаю с Yii, тем больше он мне нравится… :)

Решение сырое, наспех написанное, но функцию группировки решает, немного позже добавлю расширение для сворачивания группы, убирание из вывода колонок по которым произвелась группировка, а также расширения массива входных колонок, чтобы можно было группировать по идентификаторам, и подставлять принятые другие значения.

На вход подаем массив колонок по которым необходимо сделать группировку, например: array(‘brand’, ‘mark’);





class VGroupedGridView extends CGridView

{

	public $groupColumns = array();

	public $currentGroupColumns = false;


	public function renderTableRow($row)

	{

		$data=$this->dataProvider->data[$row];

		$currentGroupColumns = "";

		foreach($this->groupColumns as $key => $column) {

			$currentGroupColumns .= ($key==0) ? $data->{$column} : ", ".$data->{$column};

		}

		if ( $this->currentGroupColumns === false || $this->currentGroupColumns != $currentGroupColumns)

		{

			print "<tr><td colspan='".count($this->columns)."'>".$currentGroupColumns."</td></tr>";

			$this->currentGroupColumns = $currentGroupColumns;

		}

		parent::renderTableRow($row);

	}

}



Результат, примерно, такой:

2410

Снимок экрана 2012-01-03 в 12.29.24.png

видел похожее расширение для CGridView

оно там + (плюсиками) могло сворачивать/разворачивать подгруппы

поищи в доступных расширениях

Я видел только CQTreeGridView (http://quantum13.ru/page/qtreegridview-rasshirenie-dlja-adminki-yii-dlja-raboty-s-derevjami-nested-sets), но оно только для админки хорошо, сильно его не ковырял, но некоторые идеи оттуда для компоновки frontend-решения возьму, спасибо.