Versionen im Vergleich

Schlüssel

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

...

Die Speicherfunktion geht von einem bereits existierenden Formular aus, welches bspw. über die Formularkomponente erstellt werden kann. Desweiteren muss über eines oder mehrere versteckte Eingabefelder die betreffenden Datensätze definiert werden. Die Speicherfunktion wird in den Events mit der Kontextklasse ContextPersist identifiziert.

Codeblock
languagexmlthemeRDark
titleDatensatzdefinition im HTML
collapsetrue
<form id="entities">
	<input type="hidden" name="selection[shopArticle][]" value="123">
	<input type="hidden" name="selection[shopArticle][]" value="456">
</form>


Codeblock
languagephp
themeRDark
use Brandbox\Framework\Component\Crud;

$selector = '#form, #entities'; // Selektoren für das Datenformular und die betreffenden Datensätze
$prefix = 'ComponentFormPrefix'; // Prefix welches auch zum erstellen des Formulars genutzt wurde
$source = 'MyCustomSource'; // Implementationsabhängige Quelldefinition (Steht in allen Events zur Verfügung)

$element = $this
	->staticController(Crud\Manager::class)
	->getButtonPersist($selector, $prefix, $source)
;

// $element ist 'null' oder eine Instanz von \Brandbox\FrameworkStyleguide\Entity\FrameworkButton

Speicheroptionen

...

Kopieren eines Datensatzes

Ähnlich zur Speicherfunktion wird auch bei der Kopierfunktion die Definition der betroffenen Datensätze erwartet. Dies kann, auch wie bei der Speicherfunktion, über versteckte Eingabefelder erfolgen. Bei der Kopierfunktion wird allerdings kein Formular mit dem Inhalt der betroffenden Datensätze benötigt. Diese Funktion wird in den Events über die Kontextklasse ContextDuplicate identifiziert.

Codeblock
languagephp
use Brandbox\Framework\Component\Crud;

$selector = '#entities'; // Selektor für die betreffenden Datensätze
$source = 'MyCustomSource'; // Implementationsabhängige Quelldefinition (Steht in allen Events zur Verfügung)

$element = $this
	->staticController(Crud\Manager::class)
	->getButtonDuplicate($selector, $source)
;

// $element ist 'null' oder eine Instanz von \Brandbox\FrameworkStyleguide\Entity\FrameworkButton

Löschen eines Datensatzes

Die Löschfunktion ist ähnlich zur Kopierfunktion aufgebaut und wird in den Events mit der Kontextklasse ContextDelete identifiziert.

Codeblock
languagephp
use Brandbox\Framework\Component\Crud;

$selector = '#entities'; // Selektor für die betreffenden Datensätze
$source = 'MyCustomSource'; // Implementationsabhängige Quelldefinition (Steht in allen Events zur Verfügung)

$element = $this
	->staticController(Crud\Manager::class)
	->getButtonDelete($selector, $source)
;

// $element ist 'null' oder eine Instanz von \Brandbox\FrameworkStyleguide\Entity\FrameworkButton

Funktionsaktionen

Allen zuvor genannten Funktionen können beliebig viele Aktionen zugeordnet werden. Diese werden je nach Konfiguration dem Anwender in einem Modal angeboten, damit dieser Aktionen für die Funktion aus- bzw. abwählen kann. Das Event OnPopulateActions wird ausgelöst um die verfügbaren Aktionen einzusammeln.

Codeblock
languagephp
titleErstellen einer Funktionsaktion
collapsetrue
/**
 * Das nachfolgende Codebeispiel fügt eine Kopieroption hinzu.
 * Dieser Code muss in einem Listener für das OnPopulateActions-Event ausgeführt werden.
 */

use Brandbox\Framework\Component\Pwa;
use Brandbox\Framework\Component\I18n;
use Brandbox\Framework\Component\Crud;

/** @var Crud\Lib\Event\OnPopulateActions $event */

$action = new Pwa\Lib\Struct\ActionElement();

$action->headline = I18n\TranslationManager::__('Example/Package.ActionHeadline');
$action->content = I18n\TranslationManager::__('Example/Package.ActionContent');

$action->identifier = 'ActionIdentifier'; // Dieser Identifikator wird dem OnExecuteOperation-Event mitgegeben, 
                                          // sofern der Anwender dieser Option gewählt hat

$action->checked = true; // Diese Option ist standardmäßig ausgewählt
$action->required = false; // Diese Option muss nicht immer gewählt sein
$action->disabled = false; // Diese Option kann nicht verändert werden

$event->actions[] = $action;

Eine Funktionsaktion wird dem Anwender immer als Checkbox präsentiert. Es ist zusätzlich möglich Unteroptionen in Form von Radiobuttons hinzuzufügen. Das nachfolgende Codebeispiel baut auf dem vorherigen auf.

Codeblock
languagephp
titleErstellen von Aktionsoptionen
collapsetrue
use Brandbox\Framework\Component\Pwa;
use Brandbox\Framework\Component\I18n;

/** @var Pwa\Lib\Struct\ActionElement $action */

$action = new Pwa\Lib\Struct\ActionElement();

$option1 = new Pwa\Lib\Struct\ActionElementOption();
$option2 = new Pwa\Lib\Struct\ActionElementOption();

// Der aus den Option ausgewählte Identifikator wird ebenfalls OnExecuteCopy mitgegeben
$option1->identifier = 'ActionIdentifierOption1';
$option2->identifier = 'ActionIdentifierOption2';

$option1->content = I18n\TranslationManager::__('Example/Package.ActionOption1');
$option2->content = I18n\TranslationManager::__('Example/Package.ActionOption2');

// Da Unteroptionen als Radiobuttons angeboten werden, kann nur eine Option gewählt werden
$option1->checked = false;
$option2->checked = true;

$action->options[] = $option1;
$action->options[] = $option2;

Eventübersicht

KlassennameBeschreibung
OnExecuteOperationWird ausgelöst, sobald eine der CRUD-Funktionen ausgelöst wird.
OnPopulateActionsWird zum einsammeln der Funktionsaktionen ausgelöst.
OnPopulateListedWird zum einsammeln von Spaltenidentifikatoren genutzt, welche bspw. bei einer Validierung ignoriert werden sollen.