web-dev-qa-db-ja.com

Yii2 GridViewのURL

私はこのコードを持っています:

<?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は正常に機能していますが、リンクのテキストを設定するにはどうすればよいですか?

46

つかいます 'format' => 'raw' の代わりに 'format' => 'url'

59
Ajey

Yiiの寄稿者であるSamdarkから解決策を得ました。 format => 'raw'を使用する必要があります:

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

xSSをエスケープするにはHtml :: encode()を使用する必要があります

24

解決:

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

試してみる

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

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

4
user1852788

生のフォーマットを使用する

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

私は解決策を得たと思う:

コード:

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

少し変更する必要があります。配列「国」のフィールド名を言うと、コードは次のようになります。

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

Html :: urlの代わりにHtml :: aを使用し、ハイパーリンクの値を$ data ['country']として追加しました。お役に立てれば。

2
b.mazgarov

属性をラベルとして作成する必要がある場合は、これを試してください:

[
 '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;'],
],
0
Naeem Ali