Symfony 1.0 batch_action işlevselliği Başlarken

3 Cevap php

Şu anda Symfony'de yazılmış bir web uygulaması üzerinde çalışıyorum. Ben bazı modüller için app backend / yönetim parçası özelliği bir "CSV ihracat" eklemek gerekiyor. Liste görünümünde, (filtreleme kriterleri dikkate alınarak) görüntülenen unsurların bir csv dosyası ile kullanıcıya sunmak gereken bir "Export" butonu olmalıdır.

Ben kimlikleri bir virgülle ayrılmış listesini alır ve CSV oluşturur modülü eylemlerinin sınıfında bir yöntem oluşturduk, ama ben görünümünde bu bağlantı eklemek için nasıl gerçekten emin değilim. Sorun görünümü her yerde, o generator.yml yapılandırma dosyasındaki verilerden anında oluşturulan oluyor mevcut olmamasıdır. Ben aşağıda dosyasının ilgili bölümünü gönderdiniz.

Ben Symfony yeniyim, bu nedenle herhangi bir yardım mutluluk duyacağız :).

Thanks,
Alex

Update


list:
  display: [id, =name, indemn, _status, _participants, _approved_, created_at]
  title: Lista acţiuni
  object_actions:
    _edit: ~
    _delete: ~
  actions:
    _create: ~
    export_csv:
      name: Export to CSV
      action: CSVExport
      params: id=csvActionSubmit
  filters: [name, county_id, _status_filter, activity_id]
  fields:
    id:
      name: Nr. crt.
  ...

Senin tavsiye sayesinde, benim eyleme bağlantılı bir düğme eklemek için idare ettik. Filtreler kullanılmış olabilir - sorun ben tüm elemanları istemiyorum çünkü ben de, eylem için bazı parametreleri göndermek için ihtiyaç olmasıdır. Ne yazık ki, proje desteklemiyor Symfony 1.0 kullanıyor batch_actions.

Şu anda, (Ben gösterge tablosundan sayısal kimlikleri () almak ve daha sonra düğme için bağlantı kurmak için DOM ayrıştırmak Javascript ile bu çevrede çalışıyorum. Gerçekten bunun için daha iyi bir yolu olabileceğini düşünüyorum.

3 Cevap

Ben sonunda istediğini elde etmek için idare ettik.

Javascript çözüm ile sorun sadece sayfada görüntülenen sonuçlar ihraç edebilirdi. Sayfalama gerekli ise, yalnızca görüntülenen sonuçlar (Geçerli sayfa) ihraç edildi.

Ben düzen şablonuna aşağıdaki ekledi:

<?php 
if (isset($filters['csv-export-link'])) {
    echo '<a href="'$filters['csv-export-link']).'">Export to CSV</a>';
}
?>

Ve ben modifiye zaten overriden addFiltersCriteria:

public function addFiltersCriteria($c) {
    // [...]
    parent::addFiltersCriteria($c);

    if (isset($this->filters['csv-export'])) {
        $idList = array();
        $results = ActionnPeer::doSelect($c);
        foreach ($results as $result) {
            $idList[] = $result->getId();
        }
        $this->filters['csv-export-link'] = '[...]/CSVExport/idList/'.implode(',', $idList);
    }
}

Son ama en az değil :), ben artık gerekli değil gibi "genel" eylem kaldırıldı ve generator.yml için csv-ihracat "filtre" ekledi.

filters: [..., _csv_export_filter]

Filtre şablonu aşağıdaki içeriği vardı:

<input type="hidden" name="filters[csv-export]" value="true" /> Active

Bu çözüm hiçbir istendiği gibi aslında çalıştığını söz, neredeyse yeniden :) olduğunu. Diğer modüller için adapte az yük vardır.

Yardımlarınız için hepinize teşekkür ederim.

Cheers!
Alex

Eğer yönetici jeneratör içinde tutmak için arıyorsanız, o zaman ne arıyorsanız bir "toplu eylem" (ayrıntılar için the Symfony docs bakınız). Temelde bu (varsayılan admin tema kullanıyorsanız) açılır menüsünde görünür ve size ilgilendiğiniz satırları kene izin verir, açılır menüden seçeneğini seçin ve 'Git' i tıklatın.

Sizin generator.yml aşağıdaki gibi görünecektir:

list:
  display: [=name, indemn, _status, _participants, _approved_, created_at]
  title: Lista acţiuni
  object_actions:
    _edit: ~
    _delete: ~
  batch_actions:
    exportcsv:
      label: "Export to CSV
...

ve bu actions.class.php bir executeBatchExportcsv() yöntemi arayacaktır. Bu yöntem sfWebRequest nesne kimlikleri bir dizi geçer, böylece mevcut kod oldukça kolay bunu yarmak gerekir.

Eğer söz olduğu gibi, sizin list params bunu ekleyin:

  actions:
    exportToCsv:
      name: Export to CSV
      action: exportToCsv

Modülün action.class.php file bir executeExportToCsv() eylemi oluşturmak ve bitirdiniz. Eğer düğme için güzel bir simge isterseniz ekleyebilirsiniz:

      icon: /images/icons/page_excel.png

veya eylem params için somesuch.