Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

In der Engine.php wird eine public function mit dem Namen des Views erwartet. Als Eingabeparameter wird \Brandbox\PrintCore\PrintDocument\Render\Lib\Struct\ScopeElement reingegeben und als Rückgabe wird ein \Brandbox\PrintStyleguide\Entity\PrintElementAbstract erwartet.

Debug-Hinweis: Die Methode aus der Engine.php wird in \Brandbox\PrintCore\PrintDocument\Render\Manager::getElementResult via \Brandbox\Framework\Brandbox\Routing\Main::getResult aufgerufen.

Es ist möglich, Einstellungen für einen View zu definieren. Diese Einstellungen werden in der View-Methode im ScopeElement als $settings in Form eines Arrays mitgegeben.

Um Einstellungen zu definieren, sollte parallel zu der config.json des Views auch eine Datei liegen, die "StructureDefinition.json" benannt ist. Beispiel: View/PrintParagraph/views/paragraph/StructureDefinition.json. Die Struktur der Datei sollte dem Schema der structur.json folgen.

...

Um einen Quelldatensatz zu definieren, erstellt man zuerst eine neue Datenbanktabelle und legt entsprechend auch eine widget.json an. Danach fügt man in der StructurDefinition.json ein Feld mit dem Identifier source an und definiert es als Input/ForeignKey auf die neu angelegte Tabelle. Das Feld source wird nun automatisiert mit den Einstellungen und dem Element verarbeitet.

...

Layout spezifische Inhalte wie Ausrichtung, Formatierung, etc. sollten in den Einstellungen ($element→settings) gespeichert werden.

Inhaltliche Inhalte wie Texte, Silbentrennungen sollten eher in Quelldatensätze (->getEntity($elements→source)) gespeichert werden. Einer der Hintergründe ist hier Datenvermeidung. Falls in jedes PrintElement jedes Mal der gleiche Text geschrieben werden würde, zum Beispiel bei einem rechtlichen Hinweis der auf jeder Seite dargestellt werden muss, wären das viele Informationen in der Datenbank. In einem solchen Fall ist es dann besser, mit Quelldatensätzen für diesen Inhalt zu arbeiten.

...

Es ist möglich, eine Variatenauswahl für ein Element anzubieten. Damit kann man Varianten und Variantenkombinationen aus dem Styleguide einfach für das Element anbieten. Dafür wird die Input/Select source "PrintElementVariants" angeboten.

Um Varianten für ein Element anzubieten, kann man in StructureDefintion für den View ein Feld mit der source "PrintElementVariants" definieren. Dieses kann dann im Code für den Aufbau des Elements über die $settings abgerufen werden.

Codeblock
languagejs
themeRDark
titleBeispiel Feld SturctureDefinition
{
    "identifier": "variants",
    "label": "i18n:View/MyViewPackage.TranslationKey",
    "type": "Select",
    "configuration": {
        "multiple": true,
        "source": "PrintElementVariants",
        "print": {
            "plugin": "MyPackage",
			"view": "myview"
        }
    }
}

...

Für Container-Elemente gibt es mit \Brandbox\PrintLayoutStandard\View\PrintContainer\Lib\Request\ContainerAbstract eine Möglichkeit mit einem extend auf \Brandbox\PrintLayoutStandard\View\PrintContainer\Lib\Request\ContainerAbstract::getContainer und \Brandbox\PrintLayoutStandard\View\PrintContainer\Lib\Request\ContainerAbstract::getContent zuzugreifen.

Container-Element müssen ihren Inhalt selbst über \Brandbox\PrintCore\PrintDocument\Render\Manager::getElementResult sammeln.

Wird nicht benötigt, da beim Verarbeiten des Elements ein SG-Element erwartet wird.