Danyal Sandeelo
Danyal Sandeelo

Reputation: 12391

Render html in yii2 Gridview Widget

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

enter image description here

but instead of links I can see the textual value.

enter image description here

How can I make it render html instead of text?

Upvotes: 14

Views: 19713

Answers (3)

Nikhil Dinesh
Nikhil Dinesh

Reputation: 3409

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

Upvotes: 2

Harsh Girdhar
Harsh Girdhar

Reputation: 31

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.

Upvotes: 3

Bizley
Bizley

Reputation: 18021

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.

Upvotes: 30

Related Questions