Vorbereitung
Für die Lösung der Aufgaben benötigst du lediglich einen Editor. Es ist empfohlen eine Magento-Instanz zu erstellen, um entsprechende Code-Vervollständigung in der IDE nutzen zu können. Wenn Du Deinen Code auf Lauffähigkeit testen möchtest, so solltest du auch die optionalen Setup-Schritt durchführen.
Setup Requirements
- PHP 7.3 oder höher
- composer
- Optional MySQL 5.7 oder höher
- Optional ElasticSearch 7
- Optional Web-Server: nginx oder Apache
Magento-Projekt erstellen
Erzeuge ein neues Projekt im Verzeichnis ./magento
mit den folgenden Befehlen
composer create-project --repository=https://repo.magento.com/ magento/project-community-edition magento
Optional: Führe die Installation von Magento durch
mysql -e "DROP DATABASE IF EXISTS ws_code_design"
mysql -e "CREATE DATABASE ws_code_design"
cd magento
bin/magento setup:install \
--base-url="http://ws-code-design.test/" \
--base-url-secure="https://ws-code-design.test/" \
--use-secure-admin=1 --use-rewrites=1 --use-secure=1 \
--db-host=localhost --db-name=ws_code_design --db-user=root --db-password=root \
--backend-frontname=admin \
--admin-firstname=admin --admin-lastname=admin --admin-email=v.justus@techdivision.com \
--admin-user=admin --admin-password=admin123 \
--language=en_US --currency=EUR --timezone=Europe/Berlin \
--elasticsearch-host=localhost --elasticsearch-port=9207 \
--cleanup-database
cd -
Erstelle eine vHost-Konfiguration für die soeben erstellte Magento-Instanz.
Aufgaben
Die folgenden Aufgaben werden in kleinen Gruppen bearbeitet. Die Lösung wird anschließend von der Gruppe vorgestellt. Die Aufgabe muss theoretisch gelöst werden. Entscheidend ist dabei die Strukturierung des Codes – nicht dessen Funktionalität. Nach Möglichkeit sollte der Code weitestgehend geschrieben, jedoch nicht getestet werden.
Aufgabe 1
WER Als Shop-Betreiber möchte ich
WAS meine Bestellungen exportieren können
WARUM um die Daten in einem externen System weiterverarbeiten zu können
UACs:
- Mit dem Befehl bin/magento workshop:order:export kann ich eine Bestellung exportieren
- Die Exporte werden im Verzeichnis var/export/order/ abgelegt
- Der Export erfolgt als JSON-Datei mit dem Dateinamen .json
INFO: Das JSON-Format ist näher definiert und kann vom Entwickler frei gewählt werden. Es müssen alle relevanten Informationen der Bestellung (Lieferadresse, Rechnungsadresse, Positionen und Summen) enthalten sein.
Vorlage: Nutze für Dein Modul die Vorlage ./module-template
. Kopiere dazu den Inhalt des Ordners in das
Verzeichnis ./magento/app/code
.
cp -R ./module-template/* ./magento
Zeit: 45 min
Aufgabe 2
WER Als Shop-Betreiber möchte ich
WAS meine Bestellungen über die Admin-UI von Magento exportieren können
WARUM um die Daten in einem externen System weiterzuverarbeiten
Blocked by: Aufgabe 1
UACs:
- Im Admin UI von Magento befindet sich auf der Detailansicht einer Bestellung eine zusätzlicher Button mit der Aufschrift “Export [JSON]”
- Beim Klick auf den Button, wird der Export der Bestellung durchgeführt, dabei wird die Logik aus Aufgabe 1 wiederverwendet
- Der Benutzer bekommt die Meldung zu sehen, dass die Bestellung exportiert wurde.
Vorlage: Nutze das von Dir in Aufgabe 1 erstellt Modul.
Zeit: 30 min
Aufgabe 2-a
Führe die Aufgabe 2 erneut durch, verwende dabei jedoch die Musterlösung der Aufgabe 1 als Ausgangslage.
Zeit: 30 min
Aufgabe 3
WER Als Shop-Betreiber möchte ich, dass
WAS meine Bestellungen automatisch alle 15 Minuten exportiert
WARUM um die Daten in einem externen System weiterverarbeiten zu können
Blocked by: Aufgabe 1
UACs:
- Es existiert ein Cronjob, welcher alle 15 Minuten ausgeführt wird
- Der Cronjob exportiert alle Bestellungen, der letzten 15 Minuten
- Für den Export wird die Logik aus Aufgabe 1 wiederverwendet
Vorlage: Nutze das von Dir in Aufgabe 1 erstellt Modul.
Zeit: 30 min
Aufgabe 3-a
Führe die Aufgabe 3 erneut durch, verwende dabei jedoch die Musterlösung der Aufgabe 1 als Ausgangslage.
Zeit: 30 min