2016-07-11 13 views
0

値がnullでコードが機能していない場合、yii2 gridveiwの空の列を非表示にしたい。yii2 gridview hide空の列が機能しない

私はこのコードを試してみました:動作していないコードの両方の線の上

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

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

そして、これを試してみました。 divisionName.nameがnullの場合、gridviewから列全体を非表示にしますが、このコードで何が問題になりますか?

+0

これはまったく混乱しています。 '' visible''に関数を設定することはできません。trueまたはfalseだけが許されます。このプロパティは一度しか評価されません。値がある場合は各行をチェックせず、列を表示するかどうかを決定します。そして ''divisionName.name' == NULL'はfalseです。文字列とNULLを比較します。そして 'if(...)が真を返します。それ以外の場合はfalseを返します; '...あなたはこれが絶対に余計なことを知っていませんか? – robsch

+0

@robschが「目に見える」のであれば、あなたはテストの結果をアースすることができます。 – scaisEdge

答えて

1

は、ウィジェットが

を示している前

適切なソリューションを表示/非表示状態のチェックに基づいています..あなたがnull値を表示しないnull値を隠すしまうので、あなたはまた、論理的な問題を抱えているようです

$showDivision = myFunctioForShow(...); 

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

ありがとうございます。 –

+0

''division' == null'は常にfalseです。 – robsch

+0

@robschなぜ 'division' == NULLは常にfalseですか? – scaisEdge

1

@robschあなたは正しいです、なぜ文字列とNULLを比較しますか?

正しい方法は次のとおりです。

(empty(division)) ? false: true

が、この1はまた、動作していません。

関連する問題