관리자가 미리 업로드 한 파일을 다운로드 할 수있는 기능을 사용자에게 제공하는 Yii2 프레임 워크가 포함 된 webapp을 구축하고 있습니다.GridView ActionColumn을 추가 아이콘으로 확장
sendFile()
메서드를 호출하는 특정 컨트롤러에 actionDownload
액션을 만들었습니다.
GridView (문서 목록)에서 클릭하면 특정 동작 actionDownload
을 호출하는 버튼을 어떻게 만듭니 니?
관리자가 미리 업로드 한 파일을 다운로드 할 수있는 기능을 사용자에게 제공하는 Yii2 프레임 워크가 포함 된 webapp을 구축하고 있습니다.GridView ActionColumn을 추가 아이콘으로 확장
sendFile()
메서드를 호출하는 특정 컨트롤러에 actionDownload
액션을 만들었습니다.
GridView (문서 목록)에서 클릭하면 특정 동작 actionDownload
을 호출하는 버튼을 어떻게 만듭니 니?
같은 template 및 buttons의 선언을 확장 :
[
'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',
]
);
},
],
],
URL을 다운로드 아이콘은 아이콘의 세트를 기존에 추가됩니다. 예를 들어 기본 아이콘이 렌더링되는 방법을 볼 수 있습니다 here.
일반적으로 직접 링크를 만들지 않아도 버튼 이름과 모델 기본 키 (예 : /download?id=1
)를 기반으로 생성됩니다. 경우
당신은 다른 URL 특별한 속성이 $urlCreator라고,하지만 당신은 또한 예를 들어, 마우스 오른쪽 버튼을 렌더링 폐쇄에서 변경할 수 있습니다 존재합니다 : kartik- 다른 액션 버튼을 추가하는 방법
'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',
]
);
},
잘 작동합니다. glyphicon-download를 사용하여 glyphicon-arrow-download를 대체하면 아이콘이 표시됩니다. – Ludo
v yii2 격자 조치 컬럼?
다음 예를 참조하십시오. 복사 버튼이 추가되었습니다.
[
'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'],
],
템플릿 속성은 중요하다
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}'
],
],
]);
경우 정확히이 버튼을 배치 하시겠습니까? 보기/업데이트/삭제와 같은 버튼이있는 작업 열에 있습니까? 아니면 별도의 열에? 파일을 어떻게 다운로드합니까? 아카이브, 개별적으로 또는 각 GridView 행에 대해 하나의 파일? 자세한 내용을 입력하십시오. – arogachev
안녕하세요, 답장을 보내 주셔서 감사합니다. 액션 열에 버튼을 배치해야합니다. GridView의 모든 행에는 하나의 특정 파일이 있으므로 각 Grofview 행마다 하나의 버튼이 필요합니다. – AleCat83