Подтвердить что ты не робот

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.

/ВУЗЫ новый/расширенный/администратор/сайт/индекс

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

решение:

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

Ответ 5

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

<?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

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

Код:

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

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

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

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

Ответ 7

да использовать, сырой формат

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

Ответ 8

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

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