example actioncolumn gridview yii2

gridview - example - yii grid actioncolumn



Extienda GridView ActionColumn con ícono adicional (3)

Estoy construyendo una aplicación web con Yii2 framework que proporcionará a los usuarios (iniciados) la capacidad de descargar archivos precargados por los administradores.

actionDownload la acción actionDownload en el controlador específico que llama al método sendFile() .

¿Cómo puedo crear un botón que llame a la acción acción específicaDownload al hacer clic en un GridView (la lista de documentos)?


¿Cómo agregar otro botón de acción en la columna de acción de la cuadrícula kartik-v yii2?

Solo ve el siguiente ejemplo. He agregado el botón de copiar.

[ ''class'' => ''kartik/grid/ActionColumn'', ''dropdown'' => false, ''vAlign''=>''middle'', ''template'' => ''{delete} {view} {update} {copy}'', ''urlCreator'' => function($action, $model, $key, $index) { return Url::to([$action,''id''=>$key]); }, ''buttons''=>[ ''copy'' => function ($url, $model, $key) { return Html::a(''<span class="glyphicon glyphicon-copy"></span>'', [''copy'', ''id''=>$model->id],[''title''=>''Copy'']); }, ], ''viewOptions''=>[''role''=>''modal-remote'',''title''=>''View'',''data-toggle''=>''tooltip''], ''updateOptions''=>[''role''=>''modal-remote'',''title''=>''Update'', ''data-toggle''=>''tooltip''], ''deleteOptions''=>[''role''=>''modal-remote'',''title''=>''Delete'', ''data-confirm''=>false, ''data-method''=>false,// for overide yii data api ''data-request-method''=>''post'', ''data-toggle''=>''tooltip'', ''data-confirm-title''=>''Are you sure?'', ''data-confirm-message''=>''Are you sure want to delete this item''], ],


Extienda la declaración de template y buttons como este:

[ ''class'' => ''yii/grid/ActionColumn'', ''template'' => ''{download} {view} {update} {delete}'', ''buttons'' => [ ''download'' => function ($url) { return Html::a( ''<span class="glyphicon glyphicon-arrow-down"></span>'', $url, [ ''title'' => ''Download'', ''data-pjax'' => ''0'', ] ); }, ], ],

El icono de descarga con la url se agregará al conjunto existente de iconos. Puede ver, por ejemplo, cómo se representan los iconos predeterminados here .

En el caso común, ni siquiera tiene que construir el enlace manualmente, se construirá en función del nombre del botón y la clave primaria del modelo, por ejemplo /download?id=1 .

En caso de que quiera que exista una URL diferente, se llama $urlCreator , pero también puede cambiarla en el botón de cierre de la representación, por ejemplo:

''download'' => function ($url, $model) { return Html::a( ''<span class="glyphicon glyphicon-arrow-download"></span>'', [''another-controller/anotner-action'', ''id'' => $model->id], [ ''title'' => ''Download'', ''data-pjax'' => ''0'', ] ); },


atributo de plantilla es importante

echo GridView::widget([ ''dataProvider'' => $dataProvider, ''filterModel'' => $searchModel, ''columns'' => [ [''class'' => ''yii/grid/SerialColumn''], ''id'', ''title'', [''class'' => ''yii/grid/ActionColumn'', ''buttons'' => [ ''additional_icon'' => function ($url, $model, $key) { return Html::a ( ''<span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> '', [''controller/action'', ''id'' => $model->id] ); }, ], ''template'' => ''{update} {view} {delete} {additional_icon}'' ], ], ]);