2016-07-11 3 views
0

Ich möchte yii2 gridveiw leeren Spalte ausblenden, wenn der Wert ist null, aber mein Code funktioniert nicht.yii2 gridview ausblenden leere Spalte funktioniert nicht

Ich habe diesen Code versucht:

[ 
'attribute'=>'division', 
'value'=>'divisionName.name', 
'visible' => function ($data) { 
    if ('divisionName.name' == NULL) { 
    return '0'; // or return true; 
    } else { 
    return '1'; // or return false; 
    } 
}, 
] 

und versuchte dann das:

[ 
'attribute'=>'division', 
'value'=>'divisionName.name', 
'visible' => function ($data) { 
    if ('divisionName.name' == NULL) { 
    return true; 
    } else { 
    return false; 
    } 
}, 
] 

über beide Linie von Codes nicht funktioniert. Wenn divisionName.name gleich null ist dann ausblenden gesamte Spalte von Gridview, was ist falsch mit diesem Code?

+0

Dies ist total verwirrt, IMO. Sie können keine Funktion für "sichtbar" festlegen, nur Wahr oder Falsch ist erlaubt. Und diese Eigenschaft wird nur einmal ausgewertet. Sie prüft nicht für jede Zeile, ob ein Wert vorhanden ist oder nicht und entscheidet, ob die Spalte angezeigt werden soll oder nicht. Und ''divisionName.name' == NULL' ist falsch - Sie vergleichen eine Zeichenkette mit NULL. Und wenn (...) wahr zurückkehren; sonst gib falsch zurück: '... weißt du nicht, dass das absolut überflüssig ist? – robsch

+0

@robsch in 'sichtbaren' attrinute können Sie assingn alos das Ergebnis eines Tests .. – scaisEdge

Antwort

1

scheint, dass Sie auch ein logisches Problem haben, weil Sie einen Nullwert zeigen würde und ausblenden, um einen nicht Null-Wert ..

Die richtige Lösung für die hide/show Zustand auf einem Scheck basiert, bevor das Widget

zeigte sich
$showDivision = myFunctioForShow(...); 

[ 
    'attribute'=>'division', 
     ..... 
     'visible' => $showDivision , 
] , 
+0

Danke werde ich versuchen. –

+0

''division' == null' ist immer falsch. – robsch

+0

@robsch warum 'division' == NULL ist immer falsch? – scaisEdge

1

@robsch Sie haben Recht, warum wir Zeichenfolge mit NULL vergleichen?

Der richtige Weg ist:

(empty(division)) ? false: true

aber dieses auch nicht funktioniert.