2015-01-19 9 views
21

Kullanıcıları (giriş yapmış) yöneticiler tarafından önceden yüklenmiş dosyaları indirme olanağı sağlayacak bir YS2 çerçevesiyle bir webapp yapıyorum.Ek simgeyle birlikte GridView ActionColumn'u uzatın

actionDownload eylemini, sendFile() yöntemini çağıran belirli denetleyicide oluşturdum.

Bir GridView'de (belge listesi) tıklatarak ilgili eylemi actionDownload araya getiren bir düğme nasıl oluşturabilirim?

+1

Tam olarak nerede bu düğmeye yerleştirmek istiyoruz? Görünüm/güncelleme/silme gibi düğmeli eylem sütununda? Veya ayrı bir sütunda mı? Dosyalar nasıl indirilir? Arşivde, her GridView satırı için ayrı mı yoksa bir dosya mı? Lütfen daha fazla bilgi verin. – arogachev

+0

Merhaba, cevabınız için teşekkürler. Düğmeyi eylem sütununa yerleştirmem gerekiyor. GridView'deki her satırın belirli bir dosyaya sahip olması için her bir Grofview satırı için bir düğmeye ihtiyacım var. – AleCat83

cevap

35

böyle template ve buttons ilanını uzatın:

[ 
    '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 ile indirme simgesi simgeleri set mevcut eklenecektir. Örneğin, varsayılan simgelerin nasıl oluşturulduğunu görebilirsiniz here. Genel durumda, bağlantıyı manuel olarak yapmak zorunda kalmazsınız, bu, düğme adı ve model birincil anahtarına göre oluşturulacaktır, örneğin /download?id=1. durumda

farklı url özel mülkiyet bunun $urlCreator denir, ama aynı zamanda örneğin, sağ düğme oluşturma kapatma bunu değiştirebilir, mevcut istiyorum: kartik- başka işlem düğmesi nasıl eklenir

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

Bu iyi çalışıyor, glificon-ok tarafından glificon-download ile indirilen simgeyi görüntülemek için değiştirin. – Ludo

2

v yii2 ızgara eylem sütunu?

Sadece aşağıdaki örneğe bakın. Kopyala düğmesi ekledim.

[ 
    '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'], 
], 
1

şablon niteliği önemlidir

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}' 


     ], 
    ], 
]);