可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
In yii2 gridview, I have this code:
<?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'],
],
]); ?>
In grid view, text is being generated with url address.
/academia-new/advanced/admin/site/index
Url is working fine, but how can I set a text for link?
回答1:
Use 'format' => 'raw'
instead of 'format' => 'url'
.
回答2:
I got the solution from Samdark, contributor of yii. need to use format=>'raw':
...
'format' => 'raw',
'value'=>function ($data) {
return Html::a(Html::encode("View"),'site/index');
},
need to use Html::encode() to ecape XSS
回答3:
solution:
<?= 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'],
],
]); ?>
回答4:
try
return Html::a('link_text','site/index');
https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseHtml.php
回答5:
use raw format
<?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'],
],
]); ?>
回答6:
I think I got the solution:
The code:
'value'=>function ($data) {
return Html::url('site/index');
},
Should be a bit modified. Let say your field name in array 'country', then code should be like this:
'value'=>function ($data) {
return Html::a($data['country'], ['site/index']);
},
So instead of Html::url I used Html::a and added value of the hyperlink as $data['country'].
Hope this helps.
回答7:
Try below code.
GridView::widget([
'dataProvider' => $dataProvider,
'rowOptions' => function ($model, $index, $widget, $grid) {
return [
'id' => $model['id'],
'onclick' => 'location.href="'
. Yii::$app->urlManager->createUrl('controllerName/view')
. '?id="+(this.id);'
];
},
...
])