В 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 работает нормально, но как я могу установить текст для ссылки?
Используйте 'format' => 'raw'
вместо 'format' => 'url'
.
Я получил решение от Samdark, участника yii. нужно использовать 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
Думаю, я получил решение:
Код:
'value'=>function ($data) { return Html::url('site/index'); },
Должно быть немного изменено. Скажем, имя вашего поля в массиве «страна», тогда код должен выглядеть следующим образом:
'value'=>function ($data) { return Html::a($data['country'], ['site/index']); },
Поэтому вместо Html :: url я использовал Html :: a и добавил значение гиперссылки как $ data ['country'] . Надеюсь это поможет.
использовать необработанный формат
<?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'], ], ]); ?>