我希望gridview中的文本是将此文本发送到同一列的过滤器的链接。
到目前为止,我正在这样做: 'columns'=>[
...
[
'attribute'=>'colname',
'value'=>function($data){
return Html::a($data->colname,Yii::$app->request->url.'&MymodelSearch[colname]='.$data->colname);
},
],
...
]
但它很丑陋,并不总是有效
答案 0 :(得分: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');
?>