2014-12-08 11 views
7

Ho creato un input da casella di controllo di tipo Booleano per la memorizzazione di valori come non caricati - selezionato o deselezionato. Controllato memorizzerà 1 e incontrollato memorizzerà 0.yii2: Mostra etichetta anziché valore per casella di controllo booleana

Ora voglio mostrare l'etichetta come o No per il valore 1 e 0 nella griglia-view e vista. Come può farlo.

mio codice _form.php è come

$form->field($model, 'discharged')->checkBox(['label' => 'Discharged', 
'uncheck' => '0', 'checked' => '1']) 

ho cercato come

[ 
'attribute'=>'discharged', 
'value'=> ['checked'=>'Yes','unchecked=>'no'] 
], 

ma non sembra la sintassi corretta.

Grazie.

risposta

10

Come arogachev Detto questo, è necessario utilizzare formattatore booleano:

'discharged:boolean', 

http://www.yiiframework.com/doc-2.0/guide-output-formatter.html

http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asBoolean()-detail

o si potrebbe aggiungere una funzione getDischargedLabel() nel modello:

public function getDischargedLabel() 
{ 
    return $this->discharged ? 'Yes' : 'No'; 
} 

E nella tua griglia:

[ 
    'attribute'=>'discharged', 
    'value'=> 'dischargedLabel', 
], 
+0

opere perfette. Grazie mille. – Pawan

6

Prima opzione:

[ 
    'attribute' => 'discharged', 
    'format' => 'boolean', 
], 

o scorciatoia:

'discharged:boolean', 

Questo non richiede metodi aggiuntivi nel modello e la scrittura di etichette di testo (che sarà impostato automaticamente a seconda lingua nella tua configurazione).

Vedere ulteriori dettagli here.

Seconda opzione:

Invece di scrivere ulteriore metodo nel modello che si può semplicemente passare chiusura a value. È possibile controllare i dettagli here.

[ 
    'attribute' => 'discharged', 
    'value' => function ($model) { 
     return $model->discharged ? 'Yes' : 'No'; 
    }, 
], 
+0

dimenticato formattatore booleano, +1 – soju

+0

@arogachev Questo è molto più semplice – Pawan

+0

sì, e hai solo bisogno di 'scaricato: boolean' come definizione delle colonne – soju

2

Se costantemente visualizzare booleani allo stesso modo nella vostra app, è anche possibile definire un formattatore booleana globale:

$config = [ 
     'formatter' => [ 
      'class' => 'yii\i18n\Formatter', 
      'booleanFormat' => ['<span class="glyphicon glyphicon-remove"></span> no', '<span class="glyphicon glyphicon-ok"></span> Yes'], 
     ], 
    ]; 

Allora aggiungi la tua colonna:

'discharged:boolean', 
Problemi correlati