Versionen im Vergleich

Schlüssel

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

...

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 anbietenpflegbar machen. Dafür wird die den Feldtyp Input/Select die source "PrintElementVariants" angeboten.

Um Varianten die Variantenauswahl für ein Element anzubieten, kann man in der 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.

...

Um Varianten für ein die source PrintElementVariants zur Auswahl hinzuzufügen, kann das Event \Brandbox\PrintCore\PrintDocument\Structure\Lib\Event\OnPopulateVariants verwendet werden. Wichtig ist, dass man nur relevante Varianten für die Kombination aus $plugin und $view erweitert hinzufügt.

Für diese Vorgehensweise gibt es die Klasse \Brandbox\PrintCore\PrintDocument\Structure\Lib\Request\Listener\PrintDocumentStructure\PopulateVariants\PopulateVariantsAbstract von der abgeleitet werden kann. Damit kann man die Varianten über ein Array definieren.

Codeblock
languagephp
themeRDark
titleBeispiel Listener ViewPrintParagraph.paragraph
use Brandbox\PrintCore\PrintDocument\Structure;

class Variants extends Structure\Lib\Request\Listener\PrintDocumentStructure\PopulateVariants\PopulateVariantsAbstract
{
    public const PLUGIN = 'View/PrintParagraph'; // Für welches Plugin soll diese Varianten dargestellt werden
    public const VIEW = 'paragraph';             // Für welchen View soll diese Varianten dargestellt werden
    public const VARIANTS = [                    // Die Varianten
        'MyKeyVariant1' => [                       // Interner Key um in der Eventstruktur die Variante identifizierbar zu machen
            'label' => 'i18n:View/ProtektorPrintParagraphMyPackage.EnumerationVariantsFooterCountEnumerationVariantsExampleOne', // Übersetzungskey für den Namen
            'variants' => ['position-footer']specific', 'underline']                         // Variantenkombination 
        ],
        'MyKeyVariant2' => [
            'label' => 'i18n:View/ProtektorPrintParagraphMyPackage.EnumerationVariantsProductHeadlineEnumerationVariantsExampleTwo',
            'variants' => ['product-headlinespecial']
        ]
    ];
}

Man sollte beachten, dass die erstellten Tabellen für die Views auch in einem Rollenschema hinterlegt wurden. Meist in der App in welcher der View liegt. Engine-Methoden brauchen keine Security-Definition, da der view ohne Rechtecheck aufgerufen wird (die Eintity unterliegt allerdings noch dem Rechtesystem).

...