Beziehungs Ei Fields
Wie im Artikel Beziehungen im Bereich Persistence / ORM erklärt, können Entities über OneToOne-, ManyToOne-, OneToMany- und ManyToMany-Eigenschaften miteinander in Beziehung stehen. Beziehungs Ei Fields können solchen Eigenschaften zugewiesen werden und bieten dem Rocket-Nutzer ein einfaches Interface, um Beziehungen zwischen Einträgen zu verwalten. Ausserdem intergrieren sie sich in den Filter und können als Kriterien für Berechtigungen verwendet werden.
ManyToOneSelectEiField
Ein ManyToOneSelectEiField
kann ManyToOne-Eigenschaften zugewiesen werden. Im Edit-Modus ermöglicht dieses Ei Field dem Rocket-Nutzer einen Eintrag der Gegenseite auszuwählen. Im Anzeige-Modus wird der jeweilige Eintrag der Gegenseite verlinkt.
Beispiel
"blogCategory": { "class": "rocket\\spec\\ei\\component\\field\\impl\\relation\\ManyToOneSelectEiField", "props": { "targetRemovalStrategy": "unset" }, "label": "Blog Category", "objectProperty": "blogCategory", "entityProperty": "blogCategory" }
Props
Name | Typ | Bedeutung |
---|---|---|
displayInOverview |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Übersicht angezeigt. |
displayInDetailView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Detailansicht angezeigt. |
displayInEditView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Editansicht angezeigt. |
displayInAddView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Addansicht angezeigt. |
constant |
boolean / optional / Standard: false |
Wenn true , dann kann der Rocket-Nutzer das Feld nur beim Hinzufügen eines Eintrags bearbeiten. |
readOnly |
boolean / optional / Standard: false |
Wenn true , dann kann der Rocket-Nutzer dieses Feld nicht bearbeiten. |
min |
int / optional |
Die Anzahl Einträge, die der Rocket-Nutzer im Edit-Modus mindestens auswählen muss. |
max |
int / optional |
Die Anzahl Einträge, die der Rocket-Nutzer im Edit-Modus maximal auswählen kann. |
draftable |
boolean / optional / Standard: true |
Wenn true , dann kann dieses Feld in Drafts verwendet werden. |
targetEiMaskId |
string / optional |
Die Ei Mask, die angewendet werden soll, wenn der Rocket-Nutzer Einträge der Gegenseite über dieses Ei Field anzeigt oder bearbeitet. Diese Ei Mask muss für die Ei Spec der Gegenseite definiert sein. Im oben stehenden Beispiel müsstest du eine solche Ei Mask also für die Ei Spec der Entity |
filtered |
boolean / optional / Standard: true |
Wenn false , dann stehen dem Rocket-Nutzer beim Editieren alle Einträge der Gegenseite zur Auswahl, ungeachtet irgendwelcher Restriktionen (nicht empfohlen). |
embeddedAddEnabled |
boolean / optional / Standard: false |
Wenn private static function _annos(AnnoInit $ai) { $ai->p('blogCategory', new AnnoManyToOne(BlogCategory::getClass(), CascadeType::PERSIST)); } |
targetRemovalStrategy |
string / optional / Standard: "prevent" |
Wird im Abschnitt Target Removal Strategy erklärt. |
OneToManySelectEiField
Ein OneToManySelectEiField
kann OneToMany-Eigenschaften zugewiesen werden. Im Edit-Modus ermöglicht dieses Ei Field dem Rocket-Nutzer Einträge der Gegenseite auszuwählen. Im Anzeige-Modus werden die jeweiligen Einträge der Gegenseite verlinkt.
Beispiel
"blogArticles": { "class": "rocket\\spec\\ei\\component\\field\\impl\\relation\\OneToManySelectEiField", "props": { "displayInEditView": false, "displayInAddView": false, "readOnly": true }, "label": "Blog Articles", "objectProperty": "blogArticles", "entityProperty": "blogArticles" }
Props
Name | Typ | Bedeutung |
---|---|---|
displayInOverview |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Übersicht angezeigt. |
displayInDetailView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Detailansicht angezeigt. |
displayInEditView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Editansicht angezeigt. |
displayInAddView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Addansicht angezeigt. |
constant |
boolean / optional / Standard: false |
Wenn true , dann kann der Rocket-Nutzer das Feld nur beim Hinzufügen eines Eintrags bearbeiten. |
readOnly |
boolean / optional / Standard: false |
Wenn true , dann kann der Rocket-Nutzer dieses Feld nicht bearbeiten. |
mandatory |
boolean / optional / Standard: true |
Wenn |
draftable |
boolean / optional / Standard: true |
Wenn true , dann kann dieses Feld in Drafts verwendet werden. |
targetEiMaskId |
string / optional |
Die Ei Mask, die angewendet werden soll, wenn der Rocket-Nutzer Einträge der Gegenseite über dieses Ei Field anzeigt oder bearbeitet. Diese Ei Mask muss für die Ei Spec der Gegenseite definiert sein. Im oben stehenden Beispiel müsstest du eine solche Ei Mask also für die Ei Spec der Entity |
filtered |
boolean / optional / Standard: true |
Wenn false , dann stehen dem Rocket-Nutzer beim Editieren alle Einträge der Gegenseite zur Auswahl, ungeachtet irgendwelcher Restriktionen (nicht empfohlen). |
embeddedAddEnabled |
boolean / optional / Standard: false |
Wenn private static function _annos(AnnoInit $ai) { $ai->p('blogArticles', new AnnoOneToMany(BlogArticle::getClass(), 'blogCategory', CascadeType::PERSIST)); } |
targetRemovalStrategy |
string / optional / Standard: "prevent" |
Nur für "Owner"-Eigenschaften. Wird im Abschnitt Target Removal Strategy erklärt. |
ManyToManySelectEiField
Ein ManyToManySelectEiField
kann ManyToMany-Eigenschaften zugewiesen werden. Im Edit-Modus ermöglicht dieses Ei Field dem Rocket-Nutzer Einträge der Gegenseite auszuwählen. Im Anzeige-Modus werden die jeweiligen Einträge der Gegenseite verlinkt.
Beispiel
"blogTags": { "class": "rocket\\spec\\ei\\component\\field\\impl\\relation\\ManyToManySelectEiField", "props": { "targetRemovalStrategy": "unset", "embeddedAddEnabled": true }, "label": "Blog Tags", "objectProperty": "blogTags", "entityProperty": "blogTags" }
Props
Name | Typ | Bedeutung |
---|---|---|
displayInOverview |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Übersicht angezeigt. |
displayInDetailView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Detailansicht angezeigt. |
displayInEditView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Editansicht angezeigt. |
displayInAddView |
boolean / optional / Standard: true |
Wenn true , dann wird dieses Feld standardmässig in der Addansicht angezeigt. |
constant |
boolean / optional / Standard: false |
Wenn true , dann kann der Rocket-Nutzer das Feld nur beim Hinzufügen eines Eintrags bearbeiten. |
readOnly |
boolean / optional / Standard: false |
Wenn true , dann kann der Rocket-Nutzer dieses Feld nicht bearbeiten. |
mandatory |
boolean / optional / Standard: true |
Wenn |
draftable |
boolean / optional / Standard: true |
Wenn true , dann kann dieses Feld in Drafts verwendet werden. |
targetEiMaskId |
string / optional |
Die Ei Mask, die angewendet werden soll, wenn der Rocket-Nutzer Einträge der Gegenseite über dieses Ei Field anzeigt oder bearbeitet. Diese Ei Mask muss für die Ei Spec der Gegenseite definiert sein. Im oben stehenden Beispiel müsstest du eine solche Ei Mask also für die Ei Spec der Entity |
filtered |
boolean / optional / Standard: true |
Wenn false , dann stehen dem Rocket-Nutzer beim Editieren alle Einträge der Gegenseite zur Auswahl, ungeachtet irgendwelcher Restriktionen (nicht empfohlen). |
embeddedAddEnabled |
boolean / optional / Standard: false |
Wenn private static function _annos(AnnoInit $ai) { $ai->p('blogArticles', new AnnoOneToMany(BlogArticle::getClass(), 'blogCategory', CascadeType::PERSIST)); } |
targetRemovalStrategy |
string / optional / Standard: "prevent" |
Nur für "Owner"-Eigenschaften. Wird im Abschnitt Target Removal Strategy erklärt. |
Target Removal Strategy
Du kannst für alle oben beschriebenen Ei Fields über die JSON-Eigenschaft targetRemovalStrategy
eine Target Removal Strategy bestimmen. Allerdings steht diese Option zur Verfügung, wenn das Ei Field einer "Owner"-Eigenschaft zugewiesen wurden. Die Target Removal Strategy bestimmt, was passieren soll, wenn Einträge der Gegenseite gelöscht werden.
Angenommen du hast verschiedene Artikel einer bestimmten Kategorie zugewiesen. Wird diese Kategorie nun gelöscht, bestimmt die Target Removal Strategy was mit diesen Artikeln passieren soll. Folgende Werte können für diese JSON-Eigenschaft gewählt werden:
Wert | Bedeutung |
---|---|
"prevent" |
Das Löschen der Kategorie wird verhindert. Dem Rocket-Nutzer wird eine Fehlermeldung angezeigt. |
"unset" |
Die Beziehung wird aufgehoben und die jeweilige Kategorie von der Eigenschaft der Artikel entfernt. Bei ToOne-EiFields erhält die Eigenschaft in diesem Fall den Wert
null . Ein allfällige Setter-Methode muss diesen Wert als Parameter akzeptieren. |
"selfRemove" |
Die Artikel, die dieser Kategorie zugewiesen sind, werden ebenfalls gelöscht. |