2016-04-18 17 views
-1

У меня есть модель пользователя.Как цвет строк в зависимости от значений данных Yii CGridView

Отображая его с помощью CGridView, я хочу покрасить строки в зависимости от $model->is_admin, который является целым числом 0 или 1, поэтому один из двух цветов.

Не могли бы вы сделать простые настройки CGridView?

Контроллер

/** 
* Lists all models. 
*/ 
public function actionIndex() { 
    $model = new Users('search'); 
    $model->unsetAttributes(); // clear any default values 
    if (isset($_GET['Users'])) 
     $model->attributes = $_GET['Users']; 

    $this->render('index', array(
     'model' => $model, 
    )); 
} 

Посмотреть

<div class="row"> 
    <div class="col-sm-12 table-responsive"> 
     <?php 
     $this->widget('zii.widgets.grid.CGridView', array(
      'id' => 'users-grid', 
      'itemsCssClass' => 'table table-bordered table-hover dataTable', 
      'dataProvider' => $model->search(), 
      'enablePagination' => false, 
      // 'filter'=>$model, 
      'columns' => array(
       'username', 
       'first_name', 
       'last_name', 
       'email', 
       ), 
       array(
        'class' => 'CButtonColumn', 
       ), 
      ), 
     )); 
     ?> 
    </div> 
</div> 
+0

Что вы пытались? – DocRattie

+0

CGridView :: rowCssClassExpression. – webSkunk

+0

, возможно, неправильно поняли его. – webSkunk

ответ

0

Вот красивый пример, который может помочь вам:

http://www.yiiframework.com/wiki/314/cgridview-use-special-variable-data-in-the-htmloptions-of-a-column-i-e-evaluate-htmloptions-attribute/

Мне не удавалось реализовать его самостоятельно, используя только встроенные функции, поэтому он может быть единственным вариантом. Я не пробовал этот, но, как говорят комментарии, он должен работать.

EDIT: Я сделал это, гораздо более короткий путь

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $data_provider, 
    'rowCssClassExpression' => '$data["is_admin"] ? "tr_isadmin" : ""', 
    'columns' => array(
     array(
      'header' => 'Is admin?', 
      'name' => 'is_admin', 
     ), 
    ), 
); 

Так, rowCssClassExpression добавляет класс для т.р. обертки на основе $ данных значение [ "is_admin"].

Затем, просто добавьте CSS как

.tr_isadmin { 
    background-color: red; 
} 

Конечно, это всего лишь упрощенный пример. Вы должны адаптировать его для своей цели.

+0

Thanx миллион. оно работает. – webSkunk

+0

на мыши над, он возвращается к оригинальному цвету ?? – webSkunk

+0

Не стесняйтесь протестировать его и дайте мне знать – sszymk