Please enable JavaScript to view this site.

Das Handbuch für den JobRouter Entwickler

Navigation: Systemaktivitäten > Verwendung der PHP API am Beispiel CSV-Export > Export der CSV-Datei

Auflösen von Werten aus Untertabellen

Scroll Zurück Oben Weiter Mehr

Da hier eine variable Anzahl von Spalten konfiguriert werden kann, müssen wir einen List-Parameter auflösen:

Zur Erinnerung die XML Konfiguration des List-Parameters fieldList

<?php

...

<field id='fieldDelimiter' name='CONST_SA_CSV_FIELD_DELIMITER' desc='CONST_SA_CSV_FIELD_DELIMITER_DESC' worktable='yes' subtable='no' fixed='yes' datatype='varchar' required='yes'/>

<list id='fieldList' name='CONST_SA_CSV_COLUMN_MAPPING' worktable='no' subtable='yes' fixed='no' datatype='varchar' required='no' udl='yes'/>

...

So konnten in der Systemaktivität beliebige Spalten für den Export konfiguriert werden.

ERSTEL~1_img13

Um die Werte aus der Untertabelle Zeile für Zeile einzulesen, müssen immer die Werte der aktuellen Zeile anhand der konfigurierten Liste aufgelöst werden. Dies erfolgt mit der Methode resolveInputParameterListValues:

Daten aus der Untertabelle auflösen und in die CSV-Datei schreiben

<?php

class csvSystemActivity extends AbstractSystemActivityAPI

{

...

    private $fieldDelimiter;

    private $csvFile;

    private $csvFilePointer;

 

    protected function exportCsv()

    {

        $this->debug('exportCsv start');

 

        $this->loadGlobalSettings();

        $this->openCsvFile('w');

 

        $this->debug('exportCsv end');

    }

 

    protected function loadGlobalSettings()

    {

        $this->fieldDelimiter = $this->resolveInputParameter('fieldDelimiter');

    }

 

    protected function openCsvFile($mode)

    {

        $this->csvFile = $this->getTempPath() . DIRECTORY_SEPARATOR . 'test.csv';

        $this->debug('csvFile: '.$this->csvFile);

        $this->csvFilePointer = fopen($this->csvFile, $mode);

 

        $this->debug('executeMethodForSubtable for '. $this->getFixSubtableName());

        $this->executeMethodForSubtable('writeSubtableLineIntoFile', $this->getFixSubtableName());

    }

 

    protected function writeSubtableLineIntoFile()

    {

        $this->debug('writeSubtableLineIntoFile for '. $this->getFixSubtableName());

        $subtableValues = $this->resolveInputParameterListValues('fieldList');

        $csvLine = implode($this->fieldDelimiter, $subtableValues)."\r\n";

        fwrite($this->csvFilePointer, $csvLine);

    }

}

Führen wir nun die Systemaktivität aus, wird die Untertabelle mit dem konfigurierten Trennzeichen in die Datei test.csv im JobRouter-Temp-Verzeichnis exportiert.