Sortierung der einzelnen Elemente innerhalb einer Einkaufswelt greift nicht

Ich habe da eine Einkaufswelt, in der diverse Elemente nebeneinander, in diesem Grid, hinterlegt sind.

Beim initialen Erstellen hat da noch alles gepasst, nachdem nur einige Änderungen gemacht wurden, passt nichts mehr.

Man kann im Backend per Drag & Drop Sachen herumschieben, er sortiert sie nicht um.

Ich frage mich nun woran das liegt.

 

Das was in {foreach $emotion.elements as $element} durchläuft, das Array, verändert sich von seiner internen Reihenfolge nicht, was ich auch mache.

So weit wie ich das überblicken kann einen einzigen Wert nachdem es, wohl sortiert werden könnte bzw. nach dem es ausgegeben wird und das ist die element.id.

Diese ändert sich aber beim umsortieren genauso wenig.

Wird die Sortierung tatsächlich nirgends gespeichert und es ist einfach ein Drag und Drop ohne Funktion vorhanden - oder was ist das Problem?

Hast du deine Einkaufswelt nach dem umsortieren gespeichert?

Ja natürlich. Irgendwie greift das nicht.

Ich frage mich auch, wie und wo er das speichern will.

Die Daten die ich aus der Variable im Template kriege, hat außer einer fortlaufenden ID und der Sortierung des Arrays selber (die wie ich jetzt einfach mal annehme auf Basis der Standardsortierung nach fortlaufender ID durchgeführt wird) keine weiteren Anhaltspunkte auf eine Art Sortierung.

Deswegen frage ich mich, wie diese allgemein durchgeführt wird. 

Anhand der IDs? Dann müsste er diese ja bei einer Umsortierung neu generieren der Reihe nach. Das hört sich unpraktikabel an

Oder ist es womöglich tatsächlich so das die Drag + Drop - Funktion an der Stelle einfach ohne Funktion ist und halt durch ExtJS zur Verfügung gestellt wird aber nicht im Code verwendet werden.

Die Elemente sitzen ja im Grid und haben dann eine Spalten- und Zeilen-Nummer. Im Template ist nur eine ID, da die Dinger per Ajax nachgeladen werden. Beim Nachladen haben sie dann auch ne Spalte und Zeile.

Folgende Tabellen sind laut offiziellem Shopware-Buch relevant:

|

Tabelle

|

Kurzbeschreibung

|
|

s_emotion

|

Einkaufswelten

|
|

s_emotion_attributes

|

Attribute für Einkaufswelten

|
|

s_emotion_categories

|

Mapping von Einkaufswelten zu Kategorien

|
|

s_emotion_elements

|

Mapping von Einkaufswelten zu Komponenten inklusive Positionsangaben

|
|

s_emotion_element_value

|

Konfiguration der Elemente einer jeden Einkaufs- welt

|
|

s_emotion_element_viewports

|

Definiert, welche Elemente für welche Geräte- größen angezeigt werden sollen.

|

Dort hat es folgende Felder:

| Spalte | Typ | Kommentar |
| id | int(11) Auto-Inkrement |   |
| emotionID | int(11) |   |
| componentID | int(11) |   |
| start_row | int(11) |   |
| start_col | int(11) |   |
| end_row | int(11) |   |
| end_col | int(11) |   |
| css_class | varchar(255) NULL |   |

Da steht aber überall ne 1 drin und es ändert sich auch nichts, egal was ich mache.

Wenn du die EKW gespeichert hast, bekommst du oben rechts in der Ecke eine Benachrichtigung, dass die EWK erfolgreich gespeichert wurde? Wenn nicht, öffne im Browser mal die Developer Console und schaue auf dem Tab Network, ob der AJAX Request der die EKW speichert erfolgreich war, oder einen Fehler schmeckt. Das siehst du in der Response.

Andere Idee: EWK löschen und neu anlegen?

@arnebecker schrieb:

Wenn du die EKW gespeichert hast, bekommst du oben rechts in der Ecke eine Benachrichtigung, dass die EWK erfolgreich gespeichert wurde? Wenn nicht, öffne im Browser mal die Developer Console und schaue auf dem Tab Network, ob der AJAX Request der die EKW speichert erfolgreich war, oder einen Fehler schmeckt. Das siehst du in der Response.

Andere Idee: EWK löschen und neu anlegen?

Ja bekomme ich natürlich. Die ist zu umfangreich um sie zu löschen bzw. zu aufwändig neu anzulegen.

Ich werd jetzt wohl erstmal versuchen das über die Datenbankeinträge zu machen und zu hoffen das es nicht wieder passiert - den Aussagen entnehme ich ja ein wenig, das das Sortier bzw. Drag & Drop Feature auch tatsächlich funktioniert…

Sorry, wenn dir meine Fragen zu doof vor kamen. Aber das sind alles Fehler, die mir auch schon unterlaufen sind und evtk auf einen Programmfehler schließen lassen. Ich hab ansonsten auch keine Idee aus der Ferne. Ich würde als nächstes mal Schritt füt Schritt den Code mit Xdebug debuggen.