URL dans yii2 gridview

Dans yii2 gridview, j'ai ce code:

<?php echo GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => [
    ['class' => 'yiigridSerialColumn'],
    [
           'label'=>'bla',
           'format' => 'url',
       'value'=>function ($data) {
            return Html::url('site/index');
        },
    ],
    ['class' => 'yiigridActionColumn'],
],
]); ?>

En mode Grille, le texte est généré avec l'adresse url.

/academia-nouveau/avancé/admin/site/index

Url fonctionne bien, mais comment puis-je définir un texte pour le lien?

44
demandé sur zishe 2014-04-10 18:26:12

7 réponses

Utiliser 'format' => 'raw' au lieu de 'format' => 'url'.

54
répondu Ajey 2014-05-24 18:31:13

J'ai eu la solution de Samdark, contributeur de yii. besoin d'utiliser le format=> "brutes":

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

Besoin d'utiliser Html:: encode () pour ecape XSS

23
répondu Sarvar Nishonboyev 2014-04-10 14:45:10

Solution:

<?=  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'],
  ],
]); ?>
8
répondu yacel100 2014-11-25 13:52:52

Essayez

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

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

4
répondu user1852788 2014-04-10 14:46:24

Utiliser le format raw

<?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'],
],
]); ?>
3
répondu rakhmatov 2016-07-16 14:37:18

Je pense que j'ai la solution:

Le code:

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

Devrait être un peu modifié. Disons votre nom de champ dans le tableau 'country', alors le code devrait être comme ceci:

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

Ainsi, au lieu de Html::url j'ai utilisé Html::un et la valeur ajoutée de l'hyperlien comme $data['pays']. Espérons que cette aide.

1
répondu b.mazgarov 2016-02-24 12:04:10

Essayez le code ci-dessous.

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);'
    ];
    },
    ...
])
-1
répondu Neeraj Maurya 2018-05-24 09:07:13