...
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.
Varianten für ein Element verarbeiten
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.
...
Varianten für ein bestehendes Element erweitern
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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'] ] ]; } |
Rollenschemata
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).
...