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