Markus Michalski FAQ

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.

English Version

Zurück zur Übersicht

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