Можно ли стилизовать CGridView на основе данных?
Например, эти два случая:
Или я должен использовать другие варианты?
Да, вы можете указать css
Класс по данным. использование cssClassExpression вариант.
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
// ...
array(
'name'=>'Delta',
'value' => $data->value,
'cssClassExpression' => '$data->delta > 0 ? "up" : "down"',
),
// ...
),
));
как видно из других ответов, cssClassExpression
может быть использован для этой цели. Я думаю, что будет много if
заявления, так что вы не можете использовать встроенный if
операторы для cssClassExpression.
Я бы сделал это таким образом.
1. Сначала определите метод в вашей модели, как
public function checkColour()
{
if('value'<10)
{
return 'green quarter'
}
if('value'>10)
{
return 'yellow half'
}
}
По сути, этот метод возвращает имена классов, которые вы создали и хотите использовать для определенных условий.
2. Тогда я бы использовал это как
'columns'=>array(
array(
'name'=>'nozare',
'cssClassExpression' => '$data->checkColour()'
),
),
Вы можете сделать это с помощью cssClassExpression
массив (
‘name’ => ‘status’,
‘value’ => ‘$ data-> status0-> title’,
‘cssClassExpression’ => вызвать функцию или сделать по выражению,
),
Таким образом, вы можете установить другой класс для другой строки и написать соответствующий CSS для этого