ich habe keine API-Resource gefunden, über die man die Liste von Units (Liter, Gramm, Stück, Paket… usw) auslesen kann. Mann kann im Backend eine “Ressource” und “Privileg” erstellen und dem User zuweisen (erlauben), aber wie erstellt man entsprechende Controller, Components usw.? Gibt es ein Tutorial, das so was beschreibt?
Vielen Dank, das Tutorial „Shopware 4 API erweitern“ hatte ich auch schon gefunden und versucht umzusetzen, aber wusste nicht genau in welches Verzeichnis das API-Plugin unter SW5 muss.
Es gibt in SW5 unter /engine/Shopware/Plugins/Local/ drei Unterverzeichnisse - Backend, Core und Frontend. Der Logik entsprechend (/engine/Shopware/Controllers/) habe ich das Plugin in einem Verzeichnis /engine/Shopware/Plugins/Local/Api/ erstellt und nichts hat funktioniert. Ich bin dann davon ausgegangen, dass unter SW5 das Ganze anders konfiguriert wird aber nichs weiteres dazu gefunden.
Jetzt habe ich ich das Plugin nach /engine/Shopware/Plugins/Local/Backend/ verschoben und konnte schon mal installieren, aktivieren und aufrufen.
Alles aus dem Beispiel mit „User“ und „Users“ durch „Unit“ und „Units“ ersetzt und überall in der Unit-Resource
_\Shopware\Models\User\__User_
durch
_\Shopware\Models\Article\__Unit_
ersetzt. Das Auslesen der Units-Liste per GET funktioniert!
Beim Versuch eine Unit mit POST zu erstellen, wird allerdings eine Exception geworfen: in der Methode Unit::create() die Zeile:
_$params = $this-\>prepareUnitData($params);_
Die prepareUnitData() habe ich analog zu prepareUserData() übernommen. Nach Prüfung habe ich aber festgestellt, das auch die prepareUserData(), aufgerufen in User.php, nirgendwo definiert ist.
Kommt die Methode prepareUserData() aus SW4 und wurde in SW5 entfernt? Oder ist es eine „magische“ Methode, warum funktioniert das dann für prepareUnitData() nicht?
Wie soll das Array $params für das Übergeben an $unit->fromArray() aussehen?