Render html in yii2 Gridview Widget

2020-08-14 02:35发布

问题:

That's how I am rendering the values on a grid view

but instead of links I can see the textual value.

How can I make it render html instead of text?

回答1:

In link column configuration add:

'format' => 'html',

or if you want some extra markup there

'format' => 'raw',

In case of raw remember to encode values coming from outside users because it's not done automatically.



回答2:

A better way of doing this in Yii.

'value' => function ($data) {
    return Html::a($data->name, [$data->url, 'someData' => $data->someData]);
}

Yii Doc: https://www.yiiframework.com/doc/api/2.0/yii-helpers-basehtml#a()-detail

A little late on the post but, hope it helps the in future.



回答3:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'name',
        'email:email',
        'timestamp:date',
        [
            'attribute'=>'Resume',
            'format' => 'raw',
            'class' => 'yii\grid\DataColumn', // can be omitted, as it is the default
            'value' => function ($data) {
                $url = "www.sample.com/contactform/resumes".$data->resumepath;
                return Html::a('<i class="glyphicon glyphicon-download-alt"></i>', $url);
            },
        ],

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>