Beschreibung
Der CrudManager ermöglicht es Kopier- und Löschaktionen über eine Konfiguration zu steuern und zu reglementieren. Er setzt auf Brandbox/Doctrine auf und nutzt die folgenden Funktionen:
Die Verwendung des CrudManager ermöglicht dabei die Einschränkung von potenziell Ressourcenhungrigen Anfragen. Da Datensätze rekursiv kopiert/gelöscht werden können, ist es hier nun möglich die Rekursionspfade zu definieren und ggf. zu limitieren.
Methode | Beschreibung |
---|---|
copy | Die Methode ermöglich das Kopieren von Datensätzen, wie in Kopieren von Datensätzen beschrieben. |
delete | Die Methode ermöglicht das Löschen von Datensätzen, wie in Löschen von Datensätzen beschrieben. |
Definition per crud.json
Steht für ein Repository keine crud.json zur Verfügung, werden die Standard-Funktionen angeboten.
Eine crud.json
muss dem in framework/resources/crud-schema.json
beschriebenen JSON-Schema folgen. Eine Entwicklungsumgebung wie bspw. PHPStorm verfügt über eine einfache Validierungmöglichkeit für die Schemata.
Prohibited
In dem Array kann angegeben welche Standard-Aktionen verboten werden können. Standardmäßig sind alle Standard-Aktionen erlaubt.
Multiple
Mit multiple
gibt man an, ob der Anwender mehrere Datensätze des Typs kopieren/löschen kann.
Guided Actions
Geführte Aktionen ermöglichen die Definition einer Rekursionskette sowie die Zuordnung einer Kopier- und Löschaktion zu einem spezifischen Label. Auch hier kann entschieden werden, ob mehrere Datensätze verarbeitet werden dürfen.
{ "repositories": [ { "repository": "MyRepository", "prohibited": [ "CopyRoot", "CopyDefault", "CopyRelate", "CopyRecursive", "DeleteDefault", "DeleteRecursive" ], "multiple": false, "guidedActions": [ { "identifier": "myGuidedAction", "label": { "de": "Lorem Ipsum...", "en": "Lorem Ipsum..." }, "actions": [ "CopyRecursive", "DeleteRecursive" ], "multiple": false, "nodes": [ { "repository": "MyRepository", "nodes": [ { "repository": "MyChildRepository" } ] } ] } ] } ] }
Beispiel
use Brandbox\Framework\Brandbox\Crud; $ids = [1,2,3,4,5]; $entities = ['MyRepository' => $ids] $logger = $this ->staticController(Crud\CrudManager::class) ->copy($entities, 'myGuidedAction') ; $logger = $this ->staticController(Crud\CrudManager::class) ->delete($entities, 'myGuidedAction') ;
Versionshinweise
brandbox 8.0 (framework 1.29.0)
Das Package steht ab framwork 1.29.0 zur Verfügung