2017-01-26 11 views
1

Gridviewのテキストは、このテキストを同じ列のフィルタに送るリンクです。Yii2 gridview:フィルタに属性値を送信する

これまでのところ、私はこの方法をやっている:

'columns'=>[ 
    ... 
    [ 
    'attribute'=>'colname', 
    'value'=>function($data){ 
     return Html::a($data->colname,Yii::$app->request->url.'&MymodelSearch[colname]='.$data->colname); 
    }, 
    ], 
    ... 
] 

が、それは醜いだと常に

答えて

1
'columns' => [ 
// ... 
[ 
    'attribute' => 'colname', 
    'format' => 'raw', 
    'value' => function ($data, $key, $index, $column) { 
     if ($data->colname) 
      return 
       "<span onclick=\"" 
        . (new \yii\web\JsExpression("setFilterColname('" 
          . Html::encode($data->colname) . "');")) 
       . "\">" 
       . \yii\helpers\Html::encode($data->colname) 
       . "</span>"; 
    } 
// ... 
] 

は、ビューファイルの一番下に

<?php 
$this->registerJs(" 
    function setFilterColname(filter_value) { 
     $('input[name=\"MymodelSearch[colname]\"]').val(filter_value); 
     $('#w0').yiiGridView('applyFilter'); 
     // #w0 is ID of grid to be submited to filter 
    } 
", $this::POS_END, 'set-filter-colname'); 
?> 
をこの追加機能しません。
関連する問題