Extjs- Formular kommt ohne Datei an

Ich habe ein Extjs-Formular gebaut in dem auch ein “fileuploadfield” zum Dateiupload enthalten ist. Nur leider bleibt $_FILES im Controller leer. Als POST-Variable kommt der Wert “proof”, die Variable des Uploadfeldes, leer an. Bei einem “normalen” Formular hätte ich ja auf ein fehlendes “multipart/form-data” getippt, aber hier komme ich jetzt nicht weiter. Was kann die Ursache sein? Auszug aus main.js onPackbandSave: function(btn) { var win = btn.up('window'), // Get Window form = win.down('form'), // Get the DOM Form used in that window formBasis = form.getForm(), // Extract the form from the DOM me = this, // copy the current scope to me, because the 'this' scope tends to change store = me.getStore('Packbaender'), // load the supplier store record = form.getRecord(); // Detail View manager if (!(record instanceof Ext.data.Model)){ record = Ext.create('Shopware.apps.Baehr.model.Packband'); } formBasis.updateRecord(record); if (formBasis.isValid()) { record.save({ callback: function() { // reload the store store.load(); // and close the window. win.close(); Shopware.Msg.createGrowlMessage('',me.messages.saveDialogSuccess, me.messages.growlMessage); } }); } }, Auszug aus der View edit.js { xtype: 'fileuploadfield', name: 'proof', id: 'proof', emptyText: '{s name=proof\_upload\_text}Bitte Korrekturabzug auswählen{/s}', fieldLabel: '{s name=proof\_upload}Korrekturabzug{/s}', buttonText: '{s name=proof\_search}Durchsuchen{/s}' } Auszug aus Model Ext.define('Shopware.apps.Baehr.model.Packband', { extend: 'Ext.data.Model', fields: [//{block name="backend/baehr/model/packband/fields"}{/block} 'id', 'payment\_status', 'status', 'image', 'history', 'ordernumber', 'proof', 'name', { name: 'date', type: 'date', dateFormat:'Y-m-d' },], idProperty : 'id', proxy: { type: 'ajax', api: { //read out all articles read: '{url controller="Baehr" action="getPackbaender"}', update : '{url controller="Baehr" action="updatePackband"}', save : '{url controller="Baehr" action="updatePackband"}', }, reader: { type: 'json', root: 'data', //total values, used for paging totalProperty: 'total' } } });

Hat keiner eine Idee auf was man bei einem Fileupload achten muss? Braucht es weitere Infos? Die normalen Daten aus Textfeldern etc. kommen im Controller an, nur eben keine “Dateien” aus dem Dateiwauswahlfeld :frowning:

Hast du schon eine Lösung ? Ich habe nämlich ein ähnliches Problem!

kann es sein das da der sqlinjectionschutz zuschlägt?

Ich kam da nicht weiter. Ich bin dann auf das Shopware-Medienauswahlelement ausgewichen. Ist nicht ideal… Ich meine dass ich im Quelltext dann irgendwann tatsächlich gefunden habe, dass der Multipart-Teil in der Form fehlte. Auch folgende Ergänzung brachte nichts: return Ext.create('Ext.form.Panel', { fileUpload : true, enctype : 'multipart/form-data',

ich glaube auch, dass da irgendein schutz greift, weil er einfach die postdaten löscht… egal wie du versuchst drauf zuzugreifen… aber es muss ja eine lösung geben. Edit: Du schreibst, dass die andern Felder deines Formulars ankommen! Kannst du auf die auch zugreifen über $this->Request()->getParams() ?? ich habe nämlich das Problem, dass ich in meinem Controller nicht an die Post-Daten omme, obwohl die im Firebug als Post (Json-Array) ankommen!

Ja, bei mir kommen die sonstigen Post-Daten im Controller an. Sowohl über $this-\>Request()-\>get('status') als auch über $params = $this-\>Request()-\>getParams(); $params['status'] kann ich auf die zugreifen.

Hi, Ich würde mich mit Xdebug mal durch einen Request-Cylce „hangeln“, um zu prüfen, wie dass $_POST Array verarbeitet wird. Wenn irgendwann etwas gelöscht wird, bekommt man das so raus. „Trocken“ ist es relativ schwierig das Request durch die Dependeny Hölle (Shopware => Enlight => Zend) zu verfolgen. Ich nutze für Debugging die geniale PHP Storm IDE. Wenn ihr Fragen zur Einrichtung unter Linux habt, her damit. Besten Gruß Malte

1 „Gefällt mir“

ich hooke ja ein bestehendes plugin und binde da mein eigenes formular ein, vllt liegts auch daran??

Könnte sein. Bei mir ist zumindest alles “from scratch”, also eine komplett eigene SubApplication.

kannst du zeigen, wie du deine fenster im bootstrap eingebunden hast, oder hast du da auch nur die app.js included?? und wie schaut dein formular aus? machst du das über einen container oder ein panel? Danke dir Edit: Ich habs geschafft. Bei mir lags daran, dass im controller in der public function init(){} folgende zeile gefehlt hat: parent::init();

Freut mich!

Hallo, ich würde gern ein vorhandenes Shopware Formular um eine Dateiuploadfunktion erweitern. Leider habe ich nirgendwo gefunden ob und wie das geht. Im Store gibt es auch nur ein Plugin für den Upload in Artikeln. Könnt ihr mir vielleicht weiterhelfen?