Строки CGridView

Доброе.

Имеется выборка из пары таблиц с помощью AR. Необходимо по сложному условию в зависимости от даты и одного из столбцов указать стиль строки zii.widgets.grid.CGridView . Если я пытаюсь сделать расширение класса


class ExCGridView extends CGridView

{

public $datew;

public $field;


if(...)

$str_class = "red";

else if (...) $str_class = "blue";

else $str_class = "";

        public function renderTableRow($row)

        {

        if($this->rowCssClassExpression!==null)

                        echo '<tr class="'.$this->evaluateExpression($this->rowCssClassExpression,array('row'=>$row)).'">';

                else

                        echo '<tr class='.$str_class.'">';

                foreach($this->columns as $column)

                        $column->renderDataCell($row);

                echo "</tr>\n";

                

        }

} 

PHP warning include(CGridView.php) [<a href=‘function.include’>function.include</a>]: failed to open stream: No such file or directory

Подключаю я так ext.ExCGridView

Это можно сделать проще, задав значение rowCssClassExpression. Внутри него доступны и объект модели, и номер строки, а также все функции php :)

По поводу failed to open stream, нужно в начале файла с классом импортировать CGridView:




Yii::import('zii.widgets.grid.CGridView');



Видел данный параметр, но кроме тернарного оператора ничего туда не смог вставить. если не трудно можно пример. более сложного выражения.

rowCssClassExpression может быть не только строкой, но и любым callback’ом. Удобнее всего работать, пользуясь версией PHP 5.3+ :)




'rowCssClassExpression'=>function($row, $data) { /* любые операции */ return 'css-class'; }