2014-10-15 5 views
12

Qual è il modo corretto di eseguire un'espressione di riga per riga css. In Yii 1 c'era rowCssClass. Non riuscivo a capire come ottenere ciò con Yii2. Avevo provato questo, ma non era sicuro che ero sulla strada giusta:Yii2 Gridview riga per riga espressione css

 'rowOptions' => function($model, $key, $index, $grid){ 
     if($data->option->correct_answer == 1){ 

      return ['class' => 'danger']; 
     } 
    }, 

io sono sicuro dove trovare i parametri per la funzione da quando si tratta con il dataProvider però.

+0

btw questo è un esempio eccellente di come un framework può bloccare il tuo lavoro. Farlo manualmente impiegherebbe 5 secondi, cercando di scoprire come farlo (in modo orribilmente complicato con Yii) mi ci sono voluti 2 ore. Sto solo dicendo :( – Sliq

+1

@Sliq Sarebbe più chiaro, sarei d'accordo, ricordo che ho fatto l'errore iniziale, spero però che questa risposta risparmi le persone. – Jonnny

risposta

24

Utilizzare $ modello invece di $ dati.

Nella mia variante:

'rowOptions' => function ($model, $index, $widget, $grid){ 
     return ['style'=>'color:'.$model->status->color.'; background-color:'.$model->status->background_color.';']; 
    }, 

Nel tuo caso:

'rowOptions' => function ($model, $index, $widget, $grid){ 

     if($model->option->correct_answer == 1){ 
     return ['class' => 'danger']; 
     }else{ 
     return []; 
     } 
    }, 
+0

@ useruser1852788 Mi sembra di ottenere array_merge(): Argument # 2 is non è un array – Jonnny

+0

sembra come dovresti restituire array, quindi ho modificato la risposta - aggiunta altra parte dell'istruzione "if" con array vuoto come valore di ritorno – user1852788

+0

Stessa cosa, stack è questo 'foreach ($ this-> colonne da $ i => $ colonna) { se (is_string ($ colonna)) {$ colonna = $ this-> createDataColumn ($ colonna); } else {$ colonna = Yii :: createObject (array_merge ([ 'class' => $ this-> dataColumnClass?: DataColumn :: className(), 'grid' => $ this, ], colonna $)); } – Jonnny

0

si può anche provare questo

add nome della classe per la riga

'rowOptions' => ['class'=>'rowData'], 

poi manipolare attraverso il css

<?php 

$css = <<< CSS 
//example 
.rowData:hover{ 

} 
CSS; 
$this->registerCss($css); 
?>