Как создать пользовательский столбец действий в kartik gridview

Я пытаюсь создать столбец, отображающий глификон. Глификон будет ссылаться на URL-адрес, который позволяет пользователю загрузить файл. Любая помощь будет принята с благодарностью. Текущий код выглядит следующим образом:

GridView::widget([
'dataProvider' => $dataProvider,
'pager' => [
    'class' => 'common\widgets\Pagination',
],
'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    [
        'label' => 'Date',
        'attribute' => 'call_datetime',
        'format' => 'date',
    ],
    [
        'label' => 'Time',
        'attribute' => 'call_datetime',
        'format' => 'time',

    ],
    'call_from',
    'call_to',
    'duration',
    'call_type',
    'extension',

    [
        'label' => 'File',
        'attribute' => 'fname',
        'value' => 'callRecFiles.fname',
    ],

Это последний атрибут «fname», который пользователь будет загружать.


person Kyle    schedule 03.08.2017    source источник


Ответы (1)


Измените массив полей fname на:

[
    'label' => 'File',
    'attribute' => 'fname',
    'value' => function($model) {
         //here create glyphicon with URL pointing to your action where you can download file, something like 
         return $model->callRecFiles ? Html::a('Download', ['myController/download-action', 'fname' => $model->callRecFiles->fname]) : null;
    }
],

И подготовьте надлежащее действие, чтобы позволить пользователю загрузить файл.

person Yupik    schedule 03.08.2017
comment
Еще раз спасибо @Yupik. Однако, пока я не добавил ссылку 'format' => 'raw', она отображалась как обычный текст. - person Kyle; 03.08.2017
comment
Спасибо, Юпик. Спасибо Кайл за полезный комментарий. - person Imtiaz; 12.03.2018