...
Codeblock | ||
---|---|---|
| ||
<?php namespace brandbox\pluginType\pluginName\lib\request { use brandbox\admin\plugin; use brandbox\pluginType\pluginName; class vcard extends plugin\lib\requestAbstract { /** * @param pluginName\lib\entity\pluginNamePerson $person * * @return pluginName\lib\map\vcard */ public function getByEntity($person) { return $this ->map() ->from($person) ->to(pluginName\lib\map\vcard::class) ; } } } ?> |
Folgende Methoden wurden in diesem Beispiel genutzt:
Methode | Beschreibung |
---|---|
| Legt die Datenquelle fest. Dies kann entweder ein instantiiertes Objekt oder ein Array sein. Wird zusätzlich der Parameter |
| Führt das Mapping auf Basis der festgelegten Informationen durch und gibt das resultierende Objekt, welches über den Parameter |
Mapping auf Entities
Muss von einem Array oder Objekt auf ein Datenbank-Entity gemapped werden, so sollte die Mapping-Klasse \brandbox\component\mapping\lib\map\mapEntity
genutzt werden. Die wird mithilfe der Methode mapBuilderInterface::withMap($map)
festgelegt.
...
Mit der Mapping-Klasse \brandbox\component\mapping\lib\map\mapEntityAdvanced
können nur bestimmte Doctrine-Entity-Properties übertragen werden. Diese lassen sich über eine Black- oder Whitelist einstellen. Sollte Black- bzw. Whitelist erhält man unter anderem durch die Formular-Komponente.
Codeblock | ||
---|---|---|
| ||
<?php namespace brandbox\pluginType\pluginName\lib\execute { use brandbox\admin\plugin; use brandbox\component\form; use brandbox\component\mapping; use brandbox\pluginType\pluginName; class vcard extends plugin\lib\executeAbstract { /** * @param array $params * * @return void */ public function save($params) { // Ziel-Entity abrufen $person = $this ->getRepository(pluginName\lib\entity\person::class) ->getEntity(0) ; // Black- und Whitelist abrufen $engine = $this->getAppFactory(form\engine::class); $whitelist = $engine->getListedColumnsByEntity($person, '[Formularidentifikator]', $engine::LIST_TYPE_WHITELIST); $blacklist = $engine->getListedColumnsByEntity($person, '[Formularidentifikator]', $engine::LIST_TYPE_BLACKLIST); // Diese Mapping-Klasse muss vorher initialisiert werden $map = mapping\lib\map\mapEntityAdvanced::get($whitelist, $blacklist); $this ->map() ->from($params) ->withMap($map) ->to($person) ; } } } ?> |
...
In alle Mapping-Vorgänge kann auf verschiedenste Weise eingegriffen werden. Die folgenden Methoden stehen hierfür zur Verfügung und können vor dem Aufruf von mapBuilderInterface::to($output)
eingesetzt werden.
Methode | Beschreibung | ||||
---|---|---|---|---|---|
| Setzt die Mapping-Klasse für den aktuellen Mapping-Vorgang. Hier kann entweder ein Klassenname oder ein instantiiertes Objekt angegeben werden. Mapping-Klassen müssen das o.g. mapInterface implementieren und generische oder spezifische Mapping-Methoden bereitstellen. $withSource kann verwendet werden um in der Mapping-Methode nicht die Property rein gereicht zu bekommen sondern das gesamte Quellobjekt. | ||||
| Zwischen Quelle und Ziel können sich die Property-Namen unterscheiden, obwohl die gleichen Daten enthalten sein sollen. Hierfür kann diese Methode genutzt werden. Der Parameter $target gibt den Property-Namen im Zielobjekt an und der Parameter $source den Property-Namen im Quellobjekt. Beispiel
|
| |||||
| Mithilfe dieser Methode können statische Werte in bestimmte Properties im Zielobjekt eingefügt werden. Hierbei wird das eigentliche Mapping umgangen und der angegebene Wert genutzt. | ||||
| Mithilfe dieser Methode kann für eine bestimmte Property Code außerhalb der Mapping-Klasse aufgerufen werden. Auch kann hier, wie bei Beispiel
|
|
Eigene Mapping-Klassen nutzen
...