URL-адрес в 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-адресом.

/academia-new/advanced/admin/site/index

URL-адрес работает нормально, но как я могу установить текст для ссылки?


person Sarvar Nishonboyev    schedule 10.04.2014    source источник
comment
вы можете принять один из ответов как правильный ...? ;)   -  person benomatis    schedule 29.05.2014


Ответы (8)


Используйте 'format' => 'raw' вместо 'format' => 'url'.

person Ajey    schedule 24.05.2014
comment
что, если вы хотите отправить с ним некоторые данные, скажем, целое число ... и как его получить в контроллере ?? - person Uzumaki Naruto; 13.07.2015
comment
[ 'attribute' =› 'invoice_id', 'format' =› 'raw', 'value' =› function ($model) { return Html::a($model-›invoice_id, [ 'invoice/view', ' id' =› $model-›invoice_id ], ['target' =› '_blank']); }, ], - person Andreas Hinderberger; 22.11.2016

Я получил решение от Samdark, автора yii. нужно использовать format=>'raw':

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

нужно использовать Html::encode() для экранирования XSS

person Sarvar Nishonboyev    schedule 10.04.2014

решение:

<?=  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'],
  ],
]); ?>
person yacel100    schedule 25.11.2014
comment
Некоторое намерение действительно помогло бы удобочитаемости вашего ответа - person FrederikNS; 25.11.2014
comment
return Html::a(['site/index']) не работает в yii2 -> ошибка, попробуйте return Html::a('link','site/index'); - person Viktors; 23.12.2014

пытаться

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

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

person user1852788    schedule 10.04.2014

использовать необработанный формат

<?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'],
],
]); ?>
person rakhmatov    schedule 16.07.2016

Я думаю, что нашел решение:

Код:

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

Следует немного изменить. Скажем, ваше имя поля в массиве «страна», тогда код должен быть таким:

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

Поэтому вместо Html::url я использовал Html::a и добавил значение гиперссылки как $data['country']. Надеюсь это поможет.

person b.mazgarov    schedule 24.02.2016

попробуйте этот, если вам нужно сделать атрибут меткой:

[
 '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;'],
],
person Naeem Ali    schedule 04.08.2019

Попробуйте код ниже.

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);'
    ];
    },
    ...
])
person Neeraj Maurya    schedule 24.05.2018
comment
Это не похоже на корректный PHP-код. Можете ли вы выделить части, которые имеют решающее значение для решения исходной проблемы? - person Nico Haase; 24.05.2018