2014-04-10 25 views
41

W yii2 GridView, mam ten kod:URL w 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'], 
], 
]); ?> 

W widoku siatki, tekst jest generowany z adresu url.

/akademickiego nowa/zaawansowany/admin/site/index

Url pracuje bez zarzutu, ale w jaki sposób mogę ustawić tekst linku?

+0

może chcesz przyjąć jedną z odpowiedzi za poprawny ...? ;) – webeno

Odpowiedz

52

Korzystając 'format' => 'raw' zamiast 'format' => 'url'.

+0

co jeśli chcesz przesłać niektóre dane, powiedzmy liczbę całkowitą .. i jak ją odzyskać w kontrolerze ?? –

+1

[ \t \t \t \t atrybut '' => 'invoice_id' \t \t \t 'format' \t => 'surowy' \t \t \t \t 'wartość' => funkcji ($ modelu) { \t \t \t \t \t powrót HTML :: a ($ model-> invoice_id [ \t \t \t \t \t \t 'faktura/view', \t \t \t \t \t \t 'id' => $ model-> invoice_id \t \t \t \t \t], [ 'cel' => '_blank']); \t \t \t \t} \t \t \t] –

22

Dostałem rozwiązanie od Samdarka, współtwórcy yii. należy użyć formatu => 'surowy':

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

trzeba używać HTML :: zakodować(), aby ecape XSS

7

rozwiązanie:

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

Niektóre intentation naprawdę pomóc czytelności powrocie odpowiedź – FrederikNS

+1

HTML :: a ([ 'site/indeksu']) nie działają w yii2 -> Błąd, spróbuj powrót Html :: a ("link", "site/index"); – Viktors

1

Chyba mam rozwiązanie:

Kod:

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

Powinien być nieco zmodyfikowany. Powiedzmy swoją nazwę pola w tablicy „kraj”, a następnie kod powinien wyglądać następująco:

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

Więc zamiast HTML :: url użyłem HTML :: do i wartość dodaną hiperłącze jako $ data ['country']. Mam nadzieję, że to pomoże.

2

użycie formatu 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'], 
], 
]); ?>