File-Upload im Admin-Modul

Hallo zusammen,

ich habe ein neues Admin Modul geschrieben, dass auch soweit funktioniert. Jetzt wolle ich auch noch in das Main-Template ein Feld für den Upload eines Bildes hinzufügen. Ich habe dazu die oxFileUtils in meinem Modul abgeleitet, um in das Array $_aTypeToPath ein neues Feld hinzuzufügen.

In meinem Template habe ich analog zu manufacturer_main.tpl eine neue Zeile eingefügt, das mir im Adminbereich auch den Upload Dialog zeigt. Bis hierhin funktioniert alles wunderbar, doch wenn ich den Datensatz speichern möchte, wird weder etwas in das neue Datenbankfeld geschrieben, noch bleibt der Name der Datei im Datei-Uploadfeld erhalten.

Gibt es hierfür irgendwo eine Anleitung? Ich konnte leider nichts finden.

Es wäre super, wenn mir hierbei jemand unter die Arme greifen könnte

Grüße

Jochen

OK, ich habe es selbst gefunden. In meiner save() Methode im Controller hat eine zeile gefehlt:

oxRegistry::get("oxUtilsFile")->processFiles()

willste uns teilhaben lassen? :smiley:

Klar!

Ich habe meine Tabelle, in die ich den Namen der Datei schreiben möchte um eine Spalte erweitert:


ALTER TABLE TESTTABELLE ADD OXFILENAME VARCHAR(128)

Dann habe ich die Klasse oxutilfiles in meinem Modul erweitert und dort in das Array $_aTypeToPath ein neuen Eintrag gemacht:


    protected $_aTypeToPath = array( 'TC'   => 'master/category/thumb',
                                     'CICO' => 'master/category/icon',
                                     'PICO' => 'master/category/promo_icon',
                                     ...
                                     'TEST' => 'master/product/test',
                                     ...
                                     );

In meinem Admin Template, in dem der File Upload eingebaut werden soll habe ich zwei weitere Zeilen eingefügt:


                    <tr>
                        <td class="edittext">
                            [{ oxmultilang ident="NEUER_UPLOAD_NAME" }]
                        </td>
                        <td class="edittext">
                            <input type="text" class="editinput" size="40" maxlength="[{$edit->testtabelle__oxfilename->fldmax_length}]" name="editval[testtabelle__oxfilename]" value="[{$edit->oxinstadevice__oxmaskimage->value}]" [{ $readonly }]>
                        </td>
                    </tr>
                    <tr>
                        <td class="edittext">
                            [{ oxmultilang ident="NEUER_UPLOAD" }] ([{ oxmultilang ident="GENERAL_MAX_FILE_UPLOAD"}] [{$sMaxFormattedFileSize}], [{ oxmultilang ident="GENERAL_MAX_PICTURE_DIMENSIONS"}]):<br>
                        </td>
                        <td class="edittext">
                            <input class="editinput" name="myfile[TEST@testtabelle__oxfilename]" type="file" [{ $readonly }]>
                        </td>
                    </tr>

Und dann noch die lang.php erweitern:


<?php
$sLangName  = "Deutsch";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(
    'charset'                             => 'UTF-8',
    'NEUER_UPLOAD_NAME'  => 'Testdatei',
    'NEUER_UPLOAD'             => 'Testdatei hochladen',
);

Die hochgeladene Datei wird dann im Ordner /out/master/product/test/ abgelegt.

Grüße

Jochen

2 Likes

Ach ja…

und natürlich im Controller in der Methode save() die mittlere zeile ergänzen:


        $oTest->assign( $aParams);
        $oTest= oxRegistry::get("oxUtilsFile")->processFiles( $oTest);
        $oTest->save();

1 Like