2014-04-10 14 views
41

Nel GridView yii2, ho questo codice:URL nel 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'], 
], 
]); ?> 

In vista griglia, testo viene generato con l'indirizzo URL.

/accademico-new/avanzate/admin/sito/index

URL sta lavorando bene, ma come posso impostare un testo per il link?

+0

si può decidere di accettare una delle risposte come quella giusta ...? ;) – webeno

risposta

52

Uso 'format' => 'raw' invece di 'format' => 'url'.

+0

e se si desidera inviare alcuni dati con esso diciamo un intero .. e come si dovrebbe recuperarlo nel controller ?? –

+1

[ \t \t \t \t 'attributo' => 'invoice_id', \t \t \t \t 'formato' => 'crudo', \t \t \t \t 'valore' => function ($ model) { \t \t \t \t \t ritorno Html :: un ($ modello-> invoice_id, [ \t \t \t \t \t \t 'fattura/view', \t \t \t \t \t \t 'id' => $ modello-> invoice_id \t \t \t \t \t], [ 'target' => '_blank']); \t \t \t \t}, \t \t \t], –

22

Ho ottenuto la soluzione da Samdark, contributore di yii. necessario utilizzare format => 'crudo':

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

necessità di utilizzare HTML :: encode() per ecape XSS

7

soluzione:

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

Alcuni intentation sarebbe davvero aiutare la leggibilità della vostra risposta – FrederikNS

+1

ritorno Html :: un ([ 'site/index']) non funzionano in yii2 -> errore, provare ritorno hTML :: un ('link', 'sito/index'); – Viktors

1

Penso che ho avuto la soluzione:

Il codice:

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

dovrebbe essere un po 'modificato. Diciamo il tuo nome di campo nella serie 'paese', allora il codice dovrebbe essere simile a questo:

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

Così, invece di Html :: url ho usato Html :: un e il valore aggiunto del collegamento ipertestuale come $ data ['paese']. Spero che questo aiuti.

2

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