url在yii2 gridview

在yii2 gridview中,我有这样的代码:

<?php echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], [ 'label'=>'bla', 'format' => 'url', 'value'=>function ($data) { return Html::url('site/index'); }, ], ['class' => 'yii\grid\ActionColumn'], ], ]); ?> 

在网格视图中,正在使用url地址生成文本。

/学术界 – 新/高级/pipe理/网站/指数

url工作正常,但我怎样才能设置文本链接?

使用'format' => 'raw'而不是'format' => 'url'

我从yii的贡献者Samdark得到了解决scheme。 需要使用format =>'raw':

 ... 'format' => 'raw', 'value'=>function ($data) { return Html::a(Html::encode("View"),'site/index'); }, 

需要使用Html :: encode()来隐藏XSS

解:

 <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], [ 'label'=>'bla', 'format' => 'raw', 'value'=>function ($data) { return Html::a(['site/index']); }, ], ['class' => 'yii\grid\ActionColumn'], ], ]); ?> 

尝试

 return Html::a('link_text','site/index'); 

https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseHtml.php

我想我得到了解决scheme:

代码:

 'value'=>function ($data) { return Html::url('site/index'); }, 

应该有点修改。 假设你的字段名在数组“country”中,那么代码应该是这样的:

 'value'=>function ($data) { return Html::a($data['country'], ['site/index']); }, 

所以,而不是Html :: url我使用Html :: a和超链接的价值增加$ data ['国家'] 。 希望这可以帮助。

使用原始格式

 <?php echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], [ 'label'=>'url', 'format' => 'raw', 'value'=>function ($data) { return Html::a('there is your label',['site/index']); }, ], ['class' => 'yii\grid\ActionColumn'], ], ]); ?>