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