Yii2 gridview:将属性值发送到筛选器

Yii2 gridview:将属性值发送到筛选器,yii2,Yii2,我希望gridview中的文本是将此文本发送到同一列的筛选器的链接 到目前为止,我是这样做的: 'columns'=>[ ... [ 'attribute'=>'colname', 'value'=>function($data){ return Html::a($data->colname,Yii::$app->request->url.'&MymodelSearch[colname]='.$data->

我希望gridview中的文本是将此文本发送到同一列的筛选器的链接

到目前为止,我是这样做的:

  'columns'=>[
  ...
  [
    'attribute'=>'colname',
    'value'=>function($data){
       return Html::a($data->colname,Yii::$app->request->url.'&MymodelSearch[colname]='.$data->colname);
     },
  ],
  ...
]
但是它很难看而且不总是有效

'columns'=>[
'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>";
    }
// ...
]
// ... [ 'attribute'=>'colname', '格式'=>'原始', 'value'=>函数($data、$key、$index、$column){ 如果($data->colname) 返回 “colname”。“);”) . "\">" .\yii\helpers\Html::encode($data->colname) . ""; } // ... ]
将其添加到视图文件的底部

<?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');
?>