Crud
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"
}
],
"relateOnly": false,
"withTranslation": true
}
]
}
]
}
]
}
Hinweis
Wird das Flag relateOnly
verwendet, wird die Rekursionskette ab diesem Punkt automatisch nicht fortgesetzt.
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