Sylius Media Alt Text: Technik
Technik des Sylius Media Alt Text Plugins: Architektur-Diagramm, Verzeichnisstruktur, Tabellen und Spalten, Migrationen und die Integration in die Admin-Bildformulare und Twig-Hooks.
Sylius Media Alt Text: Technik
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Architektur
graph TD
A["Bildformular im Admin"] --> B["Form-Extension altText"]
B --> C["AltTextManager"]
D["Admin API PUT oder POST"] --> E["AltTextPersistProcessor"]
E --> C
F["Backfill-Befehl"] --> C
C --> G[("Alt-Text-Tabellen")]
G --> H["AltTextResolver"]
I["Fallback-Provider"] --> H
H --> J["Twig mmd_image_alt"]
H --> K["ImageAltTextNormalizer"]
K --> L["Shop und Admin API"]
Ein Schreibzugriff geht immer durch den AltTextManager, der Sprachen und Längen validiert. Der AltTextResolver liest die Zeilen eines Bildes (einmal pro Anfrage gemerkt) und wendet die Reihenfolge angefragte Sprache, Standardsprache, Fallback-Provider an.
Struktur
src/
Api/ Provider des Einstellungs-Endpunkts
Backfill/ AltTextBackfiller, BackfillResult
Command/ SetupCommand, BackfillCommand
Controller/Admin/ Einstellungsseite
DependencyInjection/ Bundle-Extension (Mapping, Migrationen, Overrides)
Entity/ Alt-Text-Entities, Registry, Einstellungen
Form/ Extension für die Bildformulare, Formular-Typen
Manager/ AltTextManager, AltTextValidationException
Menu/ Admin-Menüeintrag und Gruppe „MMKreativ Plugins“
Migrations/ zwei Doctrine-Migrationen
Repository/ Lese-Zugriff auf Alt-Texte und Einstellungen
Resolver/ AltTextResolver, Fallback-Provider
Serializer/ Normalizer, Payload, Persist-Processor
Settings/ MediaAltTextSettingsProvider
Twig/ Twig-Funktionen
config/ services.php, Routen, Twig-Hooks
templates/ eigene Templates und Overrides
translations/ messages.de.yaml, messages.en.yaml
Tabellen
erDiagram
SYLIUS_PRODUCT_IMAGE ||--o{ MMD_ALT_TEXT_PRODUCT_IMAGE : "hat"
SYLIUS_TAXON_IMAGE ||--o{ MMD_ALT_TEXT_TAXON_IMAGE : "hat"
SYLIUS_AVATAR_IMAGE ||--o{ MMD_ALT_TEXT_AVATAR_IMAGE : "hat"
| Tabelle | Inhalt |
|---|---|
mmd_sylius_media_alt_text_product_image |
Texte der Produktbilder |
mmd_sylius_media_alt_text_taxon_image |
Texte der Kategoriebilder |
mmd_sylius_media_alt_text_avatar_image |
Texte der Admin-Avatare |
mmd_sylius_media_alt_text_settings |
Einstellung, genau eine Zeile mit der ID 1 |
Die drei Alt-Text-Tabellen haben dieselben Spalten: id, image_id (Fremdschlüssel mit ON DELETE CASCADE), locale (bis 12 Zeichen), alt (bis 255 Zeichen) und decorative (Standard false). Pro Bild und Sprache gibt es höchstens eine Zeile (Unique-Index über image_id und locale). Löschst Du ein Bild, verschwinden seine Texte mit.
Die Einstellungstabelle hat das Feld active (ohne Datenbank-Standardwert). Die Migration legt die Zeile mit active = 1 an, und auch die Entity startet mit true.
Migrationen
Es gibt zwei Migrationen im Namespace Mmd\SyliusMediaAltTextPlugin\Migrations: Die erste legt die drei Alt-Text-Tabellen an, die zweite die Einstellungstabelle samt Startzeile. Beide brechen auf Datenbanken ab, die nicht MySQL oder MariaDB sind.
Admin-Integration
- Eine Form-Extension hängt das nicht gemappte Feld
altTextan die Bildformulare von Produkt, Kategorie und Avatar. Ist die Ausgabe ausgeschaltet, wird das Feld gar nicht erst hinzugefügt. - Der Taxon-Editor hängt an den Twig-Hooks
sylius_admin.taxon.create.content.sections.form.images.image#rightundsylius_admin.taxon.update.content.sections.form.images.image#right. Das Produktformular hat keinen passenden Hook, dort ersetzt ein Template-Override die Bildliste. - Die Einstellungsseite ist kein Sylius-Resource und kein Grid. Ihre Twig-Hooks tragen den Präfix
sylius_admin.mmd_sylius_media_alt_text_admin_settings. - Das Plugin bringt keine eigenen JavaScript- oder Stimulus-Assets mit.