2012-07-16 7 views
5

Utknąłem w problemie w CGridView yii, moje pole refundacji pokazuje 0/1, ale chcę pokazać "Tak", jeśli 0 i "Nie", jeśli 1, bez używania żadnej drugiej tabeli.jak wyświetlić "Tak/Nie" CGridView yii w zależności od pola flagi 0/1?

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'transaction-grid', 
'dataProvider'=>$model->search(), 
'filter'=>$model, 
'columns'=>array(
    'id', 
    'member_id', 
    array(
     'header' => 'MemberName', 
     'name' => 'member_id', 
     'value' => '$data->member->f_name' 
    ), 

    'refund', 
    'band_id', 

    array(
     'class'=>'CButtonColumn', 
     'template'=>'{view}', 
    ), 
), 

));

Odpowiedz

3
array(
        'name' => 'refund', 
        'header' => "Refund", 
        'value' => '$data->refund?Yii::t(\'app\',\'Yes\'):Yii::t(\'app\', \'No\')', 
        'filter' => array('0' => Yii::t('app', 'No'), '1' => Yii::t('app', 'Yes')), 
        'htmlOptions' => array('style' => "text-align:center;"), 
      ), 
+0

pojawia się następujący błąd: 'include ($ data-> zatwierdzony Yii :: t ('app', 'Tak'): Yii. php): nie udało się otworzyć strumienia: nie ma takiego pliku lub katalogu ". – SPRBRN

+0

powinieneś sprawdzić, dlaczego twoje skrypty tworzą brzydką nazwę pliku, która jest jakimś rodzajem kodu php. – Pentium10

+0

lepiej/pełna odpowiedź poniżej – redDevil

4

Mam nadzieję, że rozwiąże to Twój problem.

"Zastąp" za pomocą tego kodu.

array(
      'header' => 'Refund', 
      'name' => 'refund', 
      'value' => '($data->refund == 0) ? "Yes" : "No"' 
     ), 
+0

nie pracuje również – user1045373

+0

to wrking ... – user1045373

+0

dla mnie, to wyświetla '($ data-> Zwrot == 0)? "Tak": "Nie", więc nie rzeczywista wartość Tak lub Nie. – SPRBRN

19

Oba innych odpowiedzi będzie działać, ale najczystszym sposobem na to jest:

'columns'=>array(
    'id', 
    'member_id', 

    ... 

    'refund:boolean', 
), 

Istnieje grono CGridView typów danych kolumna które są automatycznie stosowane w przypadku korzystania dwukropka jak powyżej. Więcej informacji tutaj: https://github.com/samdark/a-guide-to-yii-grids-lists-and-data-providers/blob/master/grid-columns.md

+0

Dzięki! Ten link jest bardzo przydatny. Dostępne opcje to: data, godzina, data/godzina, numer, adres e-mail, adres URL, obraz, tekst nieprzetworzony, tekst, tekst ntext i html. – SPRBRN

+0

Jak to nie jest oznaczone jako zaakceptowane? – DaSourcerer

+0

Pentium dostał odpowiedź w (i zaakceptowane) zanim napisałem kopalni następnego dnia ;-) – acorncom

1

Podczas wyświetlania pola logiczną w CGridView użyć formatu na name:type:header podczas tworzenia kolumny, aby określić typ jako logiczną. Na przykład.

$this->widget('zii.widgets.grid.CGridView', array(
    ... 
    'columns'=>array(
     'id', 
     'refund:boolean', 
), 

Jeśli chcesz zmienić sposób pole jest wyświetlany w CActiveForm zmienić metodę renderowania do używania albo pole lub listę rozwijaną. Moją preferencją jest lista rozwijana, ponieważ daje ona możliwość ustawienia wartości z powrotem na wartość null.

$form->dropDownList($model,'refund', array(null=>"Not checked", 0=>"No", 1=>"Yes")); 
-1

w widokach NAZW admin.php

array( 'name'=>'status', 'header'=>'status', 'filter'=>array('1'=>'Inacive','2'=>'Active'), 'value'=>'($data->status=="1")?("Inacive"):("Active")' ),