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?
7 réponses
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
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'],
],
]); ?>
Essayez
return Html::a('link_text','site/index');
Https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseHtml.php
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'],
],
]); ?>
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.
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);'
];
},
...
])