цвет текста в ячейке грида

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

цвет текста в ячейке грида

Сообщение leonidps »

мне надо изменить цвет текста в ячейке грида
попробовал так

Код: Выделить всё

    array(
      'class'=>'CDataColumn',
      'header'=>'Код заявки',
      'name'=>'order_id',
      'value'=>'$data->order_id',
      'htmlOptions'=>array('width'=>'70px', 'style'=>'font-color: red'),
        ),
 
ничего не получил
Как?
Правила существуют не только для того, чтобы их нарушать.

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: цвет текста в ячейке грида

Сообщение Caveman »

Код: Выделить всё

'style'=>'color: red'

Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

Re: цвет текста в ячейке грида

Сообщение leonidps »

спасибки работает
Правила существуют не только для того, чтобы их нарушать.

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: цвет текста в ячейке грида

Сообщение slavcodev »

не лучше ли задействовать css?
Жду Yii 3!

Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

Re: цвет текста в ячейке грида

Сообщение leonidps »

а как заставить переключать цвет в зависимости от значения?
так попробовал

Код: Выделить всё

      'htmlOptions'=>array('style'=>function ($color) {
          if ($data->order_off==1) $color='color: red';
          else $color='color: black';
          return $color;},),
, выбрасывает
htmlspecialchars() expects parameter 1 to be string, object given
Правила существуют не только для того, чтобы их нарушать.

Аватара пользователя
Neval
Сообщения: 107
Зарегистрирован: 2011.10.24, 22:59
Откуда: Киев
Контактная информация:

Re: цвет текста в ячейке грида

Сообщение Neval »

А про $data->order_off Ваша функция в курсе? Напишите просто

Код: Выделить всё

 'htmlOptions'=>array(
'style'=>'color: ' . ($data->order_off==1 ? 'red' : 'black'),
)
 
Человек без чувства юмора - не серьёзный человек ;)

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: цвет текста в ячейке грида

Сообщение slavcodev »

про $data (инфо о модели) тоже ничего не известно на момент настройки виджета
Жду Yii 3!

Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

Re: цвет текста в ячейке грида

Сообщение leonidps »

на
$data
выбрасывает
Undefined variable: data

Код: Выделить всё

'htmlOptions'=>array('width'=>'40px', 'style'=>'color: '.($model->order_off==1 ? 'red' : 'black')), 
не ругается но и не работает
Правила существуют не только для того, чтобы их нарушать.

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: цвет текста в ячейке грида

Сообщение slavcodev »

повторюсь, на момент когда ты определяешь виджет в представлении, данные еще не загружены
твою задачу можно решить только если написать свой расширенный грид, унаследованный от CGridView
Жду Yii 3!

Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

Re: цвет текста в ячейке грида

Сообщение leonidps »

mc-bear писал(а):повторюсь, на момент когда ты определяешь виджет в представлении, данные еще не загружены
твою задачу можно решить только если написать свой расширенный грид, унаследованный от CGridView
может есть готовое расширение?
а почему так не работает?

Код: Выделить всё

     
'htmlOptions'=>array(
  'style'=>'color: '.function ($data) {
    if ($data->lift_off==1) return 'red';
    else return 'black';},
       ), 
я же подгрузил $data?
Object of class Closure could not be converted to string
Правила существуют не только для того, чтобы их нарушать.

esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: цвет текста в ячейке грида

Сообщение esche »

Вы строчку с функцией склеиваете.. Засуньте внутрь 'color: '
...

Аватара пользователя
Neval
Сообщения: 107
Зарегистрирован: 2011.10.24, 22:59
Откуда: Киев
Контактная информация:

Re: цвет текста в ячейке грида

Сообщение Neval »

Так принципиально юзать функцию? Зачем усложнять себе жизнь? :)
Человек без чувства юмора - не серьёзный человек ;)

Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: цвет текста в ячейке грида

Сообщение Johnatan »

Для PHP 5.3.0+ (предпочтительно)

Код: Выделить всё

'cssClassExpression'=>function($row,$data,$component){
    return ($data->order_off==1) ? 'redtext' : 'blacktext';
}
Для PHP <5.3.0

Код: Выделить всё

'cssClassExpression'=>"($data->order_off==1) ? 'redtext' : 'blacktext'" 
Добавляем соответствующее CSS:

Код: Выделить всё

.redtext {color: #f00;}
.blacktext {color: #000;}  
Voila?
Конференция: yii@conference.jabber.ru

Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

Re: цвет текста в ячейке грида

Сообщение leonidps »

Благодарю за поддержку, я пхп начинающий, буду пробовать, а склеивание строки со значением функции - это от осталось от vb, vba. там условное форматирование - рутинная операция. Мне задачка выдалась корпоративную базу на access перетащить на веб, я, будучи начинающим в веб-программировании почему то выбрал yii отступать уже поздно, много работы сделано. Так что вопросы еще будут.
как добавить стили я разобрался
а вот этот код из какого блока?

Код: Выделить всё

'cssClassExpression'=>function($row,$data,$component){
    return ($data->order_off==1) ? 'redtext' : 'blacktext';
}
Разбрался, все работает как и хотелось
Правила существуют не только для того, чтобы их нарушать.

Аватара пользователя
skeef
Сообщения: 66
Зарегистрирован: 2010.10.30, 20:41
Откуда: Севастополь

Re: цвет текста в ячейке грида

Сообщение skeef »

А что делать если значений больше двух и версия на сервере PHP <5.3.0?
Вариант (адаптированно к данным темы):

Код: Выделить всё

'cssClassExpression'=>'($data->order_off==1) ? "redtext" : ($data->order_off==2) ? "greentext" : ($data->order_off==3) ? "bluetext" : "" '
не прокатывает :(
Processor not found! Software emulation ...

Аватара пользователя
skeef
Сообщения: 66
Зарегистрирован: 2010.10.30, 20:41
Откуда: Севастополь

Re: цвет текста в ячейке грида

Сообщение skeef »

Проблема оказалась в порядке выполнения: http://habrahabr.ru/blogs/php/114899/

Правильное решение такое:

Код: Выделить всё

'cssClassExpression'=>'($data->order_off==1) ? "redtext" : ( ($data->order_off==2) ? "greentext" : ( ($data->order_off==3) ? "bluetext" : "") ) '
Processor not found! Software emulation ...

Ответить