在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地址生成文本。
/学术界-新的/先进/管理/站点/索引
Url工作正常,但如何为链接设置文字?
答案 0 :(得分:59)
使用'format' => 'raw'
代替'format' => 'url'
。
答案 1 :(得分:24)
我从yii的贡献者Samdark那里得到了解决方案。需要使用format =&gt;&#39; raw&#39;:
...
'format' => 'raw',
'value'=>function ($data) {
return Html::a(Html::encode("View"),'site/index');
},
需要使用Html :: encode()来逃避XSS
答案 2 :(得分:9)
溶液:
<?= 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'],
],
]); ?>
答案 3 :(得分:4)
尝试
return Html::a('link_text','site/index');
https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseHtml.php
答案 4 :(得分:3)
使用原始格式
<?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'],
],
]); ?>
答案 5 :(得分:2)
我想我得到了解决方案:
代码:
'value'=>function ($data) {
return Html::url('site/index');
},
应该稍微修改一下。我们在数组&#39; country&#39;中说出您的字段名称,然后代码应该是这样的:
'value'=>function ($data) {
return Html::a($data['country'], ['site/index']);
},
因此,我使用 Html :: a 代替 Html :: url ,并将超链接的值添加为 $ data [&#39; country&#39 ] 。 希望这会有所帮助。
答案 6 :(得分:0)
如果您需要将属性设置为label,请尝试以下方法:
[
'label'=>'' ,
'header'=>Yii::t('app', 'Sample Number'),
'attribute'=>'sample_number',
'width'=>'310px',
'value' => function ($model) {
return Html::a(Html::encode( $model->sample_number),
Url::to(['controller/action', 'sample_number' => $model->sample_number]));
},
'format' => 'raw',
'options'=>['class'=>'success','style'=>'font-weight:bold;'],
],
答案 7 :(得分:-1)
尝试以下代码。
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);'
];
},
...
])