it-swarm.com.de

Benutzerdefinierte Entitätstypen mit mehreren Werteigenschaften

Ich erstelle einen benutzerdefinierten Entitätstyp mit dem folgenden Basisfeld (definiert in einer Klasse, die ContentEntityBase erweitert).

public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
  $fields['recipient_id'] = BaseFieldDefinition::create('entity_reference')
    ->setLabel(t('Recipient(s)'))
    ->setDescription(t('The recipient(s)'))
    ->setSetting('target_type', 'user')
    ->setSetting('handler', 'default')
    ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
    ->setDisplayOptions('view', array(
      'label' => 'above',
      'type' => 'entity_reference_label',
      'weight' => -3,
    ))
    ->setDisplayOptions('form', array(
      'type' => 'entity_reference_autocomplete',
      'settings' => array(
        'match_operator' => 'CONTAINS',
        'size' => 60,
        'autocomplete_type' => 'tags',
        'placeholder' => '',
      ),
      'weight' => -3,
    ))
    ->setDisplayConfigurable('form', TRUE)
    ->setDisplayConfigurable('view', TRUE);
}

Ich habe das Feld auf unbegrenzte Kardinalität eingestellt. Ich versuche, die Getter und Setter für dieses Feld zu erstellen, finde jedoch keine Beispiele für Entitätstypen mit mehreren Werten.

Ich muss die folgenden Getter und Setter erstellen:

// Add a single recipient to the entity
public function setRecipient()
// retrieve all recipients for the entity
public function getRecipients()

Hat jemand ein Beispiel dafür, wie diese Funktionen für die Arbeit mit einem Feld mit mehreren Werten eingerichtet werden?

4
Jaypan
// Add a single recipient to the entity
public function setRecipient()

Was jetzt hinzufügen oder festlegen? Wenn es zur vorhandenen Liste hinzugefügt wird, würde ich empfehlen, es addRecipient () zu nennen.

Ich würde auch empfehlen, die Feldempfänger oder so zu benennen, um anzuzeigen, dass sie mehrere Werte haben.

Sie können ein Element mit \Drupal\Core\TypedData\ListInterface::appendItem() zu einer Feldelementliste hinzufügen, z. B. $ this-> get ('Empfänger_ID') -> appendItem ($ Empfänger_entität_oder_id_oder_Wert_array)

Um alle referenzierten Entitäten abzurufen, gibt es eine referencedEntities () -Methode für Entitätsreferenzfeld-Elementlisten, oder Sie können eine Schleife verwenden.

4
Berdir