style kartik csvgrid content column array actioncolumn php gridview yii yii2

php - kartik - yii2 gridview column content



URL en gridview yii2 (7)

En yii2 gridview, tengo este código:

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

En la vista de cuadrícula, el texto se está generando con la dirección url.

/ academia-new / advanced / admin / site / index

Url funciona bien, pero ¿cómo puedo configurar un texto para el enlace?


Creo que tengo la solución:

El código:

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

Debería ser un poco modificado. Deje decir su nombre de campo en matriz ''país'', entonces el código debería ser así:

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

Entonces, en lugar de Html :: url , utilicé Html :: a y agregué valor del hipervínculo como $ data [''country''] . Espero que esto ayude.


Obtuve la solución de Samdark, colaborador de yii. necesita usar format => ''raw'':

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

necesita usar Html :: encode () para ecape XSS


Pruebe el siguiente código.

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);'' ]; }, ... ])


Use ''format'' => ''raw'' lugar de ''format'' => ''url'' .


solución:

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



usar formato sin formato

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