PDF Generierung in Magento 2

magento-pdf-layout

Die Core Methoden zum Generieren von PDF Dateien sind auch in Magento 2 eher unflexibel. Eine Alternative sind Tools zum Konvertieren von HTML zu PDF.

In unserem aktuellen Magento 2 Projekt, das wir (integer_net) gemeinsam mit der Stämpfli AG entwickeln, gibt es die Anforderung, aus ausgewählten Produkten dynamisch einen PDF Katalog zu erstellen, der im Prinzip das gleiche Layout hat wie die Produktlisten im Shop. Die PDF aufgrund von HTML zu generieren lag also nahe.

In diesem Beitrag stelle ich unsere Lösung vor, die wkhtmltopdf mit dem Magento Layout integriert. Am Ende gibt es auch einen Link zum Basismodul auf Github.

Weiterlesen auf webguys.de

Domain-Logik in Magento-Anpassungen isolieren

Ich habe in letzter Zeit viel dafür plädiert, Geschäftslogik vom Framework (im Speziellen Magento) zu entkoppeln.

Das hat mehrere Vorteile

  • Von testgetriebener Entwicklung (TDD) profitieren, ohne einen Haufen Core Klassen mocken zu müssen.
  • Mögliche Wiederverwendung in verschiedenen Anwendungen (z.B. auch Magento 1 und Magento 2)
  • Separate “bounded contexts” helfen dabei, Teile der Domain isoliert und ohne Ablenkung zu betrachten.

Sogar in chirurgischen Modifikationen, mit denen wir es oft in Magento-Projekten zu tun haben, ist es den Aufwand wert, die eigentliche Logik zu identifizieren und sie von den Magento-Klassen zu extrahieren.

Vollständiger Beitrag auf integer-net.com (Englisch)

Magento 2 Integration Tests: @magentoConfigFixture

Ich konnte keine gute Dokumentation zur @magentoConfigFixture Annotation in Magento 2 Integrationstests finden, also halte ich hier mal meine Zusammenfassung fest, nachdem ich den Core Code inspiziert habe (Magento 2.1.0, Magento\TestFramework\Annotation\ConfigFixture)

Wie man @magentoConfigFixture nutzt

Standardwert 42 für Konfigurationspfad x/y/z:

/**
 * @magentoConfigFixture default/x/y/z 42
 */

Store-spezifischer Wert 42 für Konfigurationspfad x/y/z im Store mit Code store1

/**
 * @magentoConfigFixture store1_store x/y/z 42
 */

Store-spezifischer Wert 42 für Konfigurationspfad x/y/z in aktuellem Store (also Standard-Store)

/**
 * @magentoConfigFixture current_store x/y/z 42
 */

Das sind alle möglichen Formate. Der erste Parameter muss mit _store enden oder weggelassen werden. Wenn er weggelassen wird, muss der Pfad mit default/ beginnen, sonst wird er ignoriert.

Implikationen

  • Konfigurationswerte können nicht auf Website-Ebene gesetzt werden
  • Man sollte nicht “current” als echten Store Code verwenden, sonst kann für diesen Store keine Konfigurations-Fixture genutzt werden

EcomDev PHPUnit Tipp #14

Seit Jahren ist das Test-Framework EcomDev_PHPUnit quasi-Standard für Magento Unit Tests. Die aktuelle Version ist 0.3.7 und der letzte Stand der offiziellen Dokumentation ist Version 0.2.0 – seitdem hat sich viel getan, was man leider im Code und GitHub Issues selbst zusammensuchen muss. Diese Serie soll praktische Tipps zur Verwendung sammeln.

Tipp #14: Registry Fixtures

Wie bereits in Tipp #1 erklärt, können Helpers, Singletons und Registry Werte pro Test zurückgesetzt werden. Die problematischen Singletons etc. zu finden war für mich oft der schwierigste Teil beim Schreiben von Integrationstests mit EcomDev, also habe ich angefangen, sie zentral in einer fixtures/registry.yaml Datei für alle Tests zu sammeln 1. Lieber eins zu viel zurückgesetzt als eins zu wenig.

Die Datei ist aufgebaut wie folgt:
Continue reading “EcomDev PHPUnit Tipp #14”

Notes:

  1. Siehe auch YAML Directory Fallback

5 Minuten Tipps: Magento Performance Tweaks

Meine “Woche auf StackExchange” Reihe pausiert gerade weil nicht sooo viel bloggenswertes wöchentlich zusammenkommt.

Stattdessen heute mal wieder etwas neues: Tipps zu einem bestimmten Themenbereich, die man sich in maximal 5 Minuten in der Kaffeepause durchsehen kann. Das meiste nicht von mir sondern nur von mir gefunden 🙂

Es soll keine regelmäßige Reihe werden, aber ich denke es kommt das ein oder andere zusammen, was ich bisher lose gesammelt habe. Da nutze ich doch mal wieder das Blog zum Festhalten von nützlichen Dingen und hoffe, es haben noch mehr Leute etwas davon.

Fangen wir an mit Magento Performance Tweaks, alle mit wenig Aufwand, die alle relativ bedenkenlos eingesetzt werden können:

Continue reading “5 Minuten Tipps: Magento Performance Tweaks”