Problem mit zirkulären Abhängigkeiten durch Dekoratoren in Symfony 5.3.7

in  Verschiedenes , , , ,

Symfony erlaubt das Dekorieren von Services: hierbei wird im Gegensatz zum Überschreiben bestehender Services eine Ummantelung derselben vorgenommen. Immer dann, wenn der ursprüngliche Service injiziert werden soll, wird statt dessen der ihn dekorierende Ersatz verwendet. Dies ist immer dann praktisch, wenn man zusätzliche Funktionalität hinzufügen möchte, jedoch keinen Zugriff auf den originalen Service hat - zum Beispiel aus Gründen der Entkopplung oder schlicht und ergreifend weil das zu erweiternde Bundle von Dritten entwickelt wird.

Symfony CurrentUser-Attribut kollidiert mit Doctrine Param Converter

in  Verschiedenes , , ,

Symfony und Doctrine bieten bereits Unterstützung für unterschiedliche native Attribute, welche seit in PHP 8 verwendet werden können. So lassen sich diese unter anderem für ORM-Definitionen (#[ORM\*]), Validierungsregeln (#[Assert\*]), Routen (#[Route]) oder zur Injektion von Service Tags (#[TaggedIterator]) einsetzen. Das Attribut #[CurrentUser] erlaubt es, das Objekt mit dem aktuell angemeldeten Nutzer direkt als Controller-Argument zu übergeben; ein Beispiel hierfür lässt sich diesem Blog-Artikel entnehmen. Intern wird hierbei ein Argument Value Resolver benutzt.

GitHub erlaubt Vorlagen für strukturierte Ticket-Formulare

in  Verschiedenes , ,

Schon seit einiger Zeit ist es in GitHub möglich, Vorlagen für unterschiedliche Arten von Tickets zu hinterlegen. Hierbei handelt es sich um Markdown-Dateien, mit denen sich Inhalt der Beschreibung sowie weitere Angaben, wie Labels und etwaige Bearbeiter vorbelegen lassen. Für öffentliche Repositories ist nun auch ein Beta-Programm für YAML-basierte Formulardefinitionen gestartet. Diese Funktion bietet einen deutlich höheren Freiheitsgrad, indem sich mehrere Formularfelder beschreiben lassen. Wie im obigen Screenshot ersichtlich, können hiermit zum Beispiel Dropdowns/Auswahllisten verwendet und gewünschte Angaben als verpflichtend gekennzeichnet werden.

Abhängigkeiten automatisch aktualisieren mit Dependabot

in  Builds & Tests , ,

Vor knapp eineinhalb Jahren haben wir gezeigt, wie man die Aktualisierung verwendeter Drittkomponenten mit GitHub Actions automatisieren kann. Zwischenzeitlich sind wir hierbei auf den Dependabot umgestiegen. Dieses Tool wird bei GitHub schon länger zum Aufspüren und Melden von Sicherheitsproblemen verwendet. Es ist damit jedoch auch möglich, Updates zu suchen und bereitzustellen. Im Gegensatz zu dem früheren Vorgehen gibt es dabei folgende Unterschiede und Vorteile: Für jede Komponente wird ein eigener Pull Request erstellt.

Shopware 6: Installation mit HTTP-Authentifizierung absichern

in  Verschiedenes , , ,

Um zu verhindern, dass eine Entwicklungs- oder Testumgebung eines Systems von unbefugten Personen, Suchmaschinen oder anderen Bots aufgerufen wird, bietet sich ein Kennwortschutz an. Eine einfache Möglichkeit hierfür stellt die sogenannte Basic Authentication dar. Diese Variante der HTTP-Authentifizierung ist sowohl mit Apache als auch mit Nginx schnell eingerichtet und reicht für viele Anwendungszwecke aus. Bei der Verwendung mit Shopware 6 stellt man allerdings fest, dass das Backend nicht mehr korrekt funktioniert.

Optische Varianzen mit SCSS-Maps umsetzen

in  Basics , , , ,

In vielen Weblayouts ist es notwendig, unterschiedliche Ausprägungen einer bestimmten kosmetischen “Stellschraube” zu realisieren. So können etwa einzelne Akzentfarben je nach Unterseite, Kategorie oder Jahreszeit abweichen. Dies sorgt oftmals für unschönen Boilerplate-Code, welcher jedoch mit SASS/SCSS einfach eingespart werden kann. Erst einmal ausführlich Angenommen, je nach body-Klasse sollen alle Artikel-Überschriften in der zweiten Ebene eine andere Farbe erhalten. Dies könnte mit reinem CSS zum Beispiel so aussehen: 1 2 3 4 5 6 7 8 9 10 11 12 body.

Fehler in NextCloud - PDF-Dateien werden nicht dargestellt

in  Verschiedenes , ,

Kürzlich erreichte uns eine Anfrage bezüglich des NextCloud-Systems eines Kunden: in einem Ordner ließen sich keine PDF-Dateien mehr öffnen. Statt der gewohnten integrierten PDF-Darstellung erschien lediglich eine Fehlermeldung: PDF.js v2.5.207 (build: 0974d6052) Message: Missing PDF “https://cloud.domain.de/.../files/User/Ordner/Ein%2520Unterordner/und/so/weiter.pdf". Eine Recherche in dem NextCloud-Repository auf GitHub führte zu einem entsprechenden Patch. Hintergrund ist, dass in dem Pfad ein Leerzeichen enthalten war (im Beispiel: Ein Unterordner), was offenbar in der neuesten Version nicht korrekt behandelt wird.

Kommende Neuerungen in Symfony 5.3

in  Zikula Apps , ,

Vor zwei Tagen wurde Symfony 5.3.0-BETA4 veröffentlicht. Dies nehme ich zum Anlass, um einmal einen Überblick über die wichtigsten neuen Funktionen zu geben, auf die wir uns im Rahmen dieses Updates freuen können. Im Folgenden sind die bisher veröffentlichten Blog-Beiträge thematisch nach Komponente sortiert. Config Config Builder Klassen Console Negierbare Command-Optionen Verbesserte Debug-Commands Lazy Command Description DependencyInjection Mehrere Environments in einer Datei konfigurieren Service Autoconfiguration und Attribute Service Autowiring mit Attributen Form Tailwind CSS Form Theme Form Handler Helper Sortierung für Formularfelder HttpFoundation Session Service Deprecation Logging Logging-Verbesserungen (Messenger, Deprecations) Notifier Notifier-Integrationen OptionsResolver Prototype Optionen PasswordHasher Neue PasswordHasher Komponente Runtime Neue Runtime Komponente Security Verbesserter Schutz gegen Breach-Angriffe Serializer Inlined Serialization Context Twig Serialize-Filter Translation Translation Providers Uid Uid-Verbesserungen

Hugo-Seiten im Netzwerk entwickeln und testen

in  Builds & Tests , , , ,

Hugo ist ein Generator für statische Seiten, welcher auf der Programmiersprache Go basiert. Die Inhalte werden mit Markdown verwaltet und dynamisch in HTML umgewandelt. Dies ist für die meisten kleineren Projekte interessant, weil ausreichend und im Vergleich zu einem dynamischen Content Management System einfacher zu handhaben; zudem sind statische Seiten auch in Bezug auf Sicherheit und Performanz unschlagbar (siehe auch: Vorteile statischer Seiten). Der Build lässt sich dann z. B. mit GitHub Actions durchführen (zum Einsatz kommt hierfür z.