Skip to Content

Field-Api Drupal-8

Gegenüber entity_metadata_wrapper() hat sich vieles dank OOP vereinheitlicht.

Hier ein Überblick mit Beispielen:

 

Basiswerte

$entity->id(); // nid: 85

 

$entity->getTitle(); // 'Good Work'

$entity->setTitle('Good Luck');

 

$entity->isPromoted(); // bool

$entity->setPromoted(true);

 

$entity->isPublished(); // bool

$entity->setPublished(true);

 

$entity->getCreatedTime(); // timestamp: 14568763

$entity->setCreatedTime(1523321); //

 

$entity->getChangedTime(); // timestamp: 14568763

$entity->getChangedTime(1523321); //

 

$entity->getEntityTypeId(); // 'node'

$entity->getType(); // 'seminar'

 

$entity->isNew(); // bool

 

 

Viel Kram mit Revisions... Bitte prüfen !

$entity->getRevisionAuthor(); // {user-entity}

$entity->getRevisionUserID(); // 13

$entity->setRevisionAuthorID(14); // setRevisionUserID ?!?

 

 

Lesen

 

->getValue() liefert immer ein Werte-Array()

 

Der 'key' ist Feldtypabhängig:

·  'value'

·  'target_id'

·  ...

Einfache Felder:

$entity->get('field_txt')->getValue(); // [['value' => 'Hallo']]

$entity->field_txt->getValue(); // [['value' => 'Hallo']]

$entity->field_txt->value; // 'Hallo'

$entity->get('field_some_ids')->getValue(); // [['value' => 12], ['value'=> 4]]

$entity->get('field_some_ids')->value; // nur der erste Wert: 12

$entity->get('field_some_ids')[1]->value; // der zweite Wert: 4     

$entity->field_some_ids[1]->value;   // auch der zweite Wert: 4

 

Textarea:

$entity->get('field_txtarea')->getValue();

// [['value' => '<p>Hallo</p>', 'format' => 'basic_html']]

$entity->get('field_txtarea')->value; // '<p>Hallo</p>'

 

Entity-References:

$entity->field_ref_person->getValue(); // [['target_id' => 84]]

$entity->get('field_ref_person')->target_id;   //  84

$entity->field_ref_person->referencedEntities();  // [entity node(84)]

 

Feldinhalt des ersten [0] referenzierten Nodes:

$entity->field_ref_person->referencedEntities()[0]->field_person_id->value; // 'xo98'

// referencedEntities() liefert immer ein Entity-Array !!

 

Filters out empty field items and re-numbers the item deltas:

$entity->field_some_ids->filterEmptyItems()->getValue(); // [['value' => 12], ['value'=> 4]]

 

 

Schreiben

Grundsätzlich ist alles ein Multifeld-Array - get() und set() tuts immer:

$new_val = [['value' => 12], ['value'=> 4]];

$entity->set('field_some_ids', $new_val);  // oder:

$entity->field_some_ids = $new_val; 

 

Einzeln:

$entity->field_some_ids[1]->value = 17;  // oder ->target_id, oder ...

$entity->field_some_ids->set(1, 17);     // wie vor, nur muss man den key nicht kennen !

// Anfügen geht auch: set (2,99) ist hier erlaubt,

// aber set(8,99) nicht, denn es gibt nur 2 Elemente.

Anfügen:

$entity->field_some_ids->appendItem(99);  // man muss nicht wissen, dass es value heißt !

$entity->field_some_ids->getValue(); // [['value' => 12], ['value'=> 17], ['value'=> 99]]

Löschen:

$entity->field_some_ids->removeItem(1);  // entfernt 2. Item

 

 

Testen

Test, ob Feld existiert:

$entity->hasField('gibtsnich');   // false

isset($entity->field_ref_person); // tut nicht wie erwartet

 

Test, ob Feld einen Wert hat:

empty($entity->field_ref_person->getValue()); // true wenn getValue() leeres [] liefert.

$entity->field_ref_person->isEmpty(); // kürzer...

 

Language

$entity->isTranslatable();    // bool

 

$entity->field_txt->getLangcode();    // 'de'

$entity->field_txt->setLangcode('en');

 

andere

Definitionen & Settings:

$entity->field_ref_person->getFieldDefinition();

[

  'id'          => 'node.seminar.field_ref_person',

  'field_name'  => 'field_ref_person',

  'field_type'  => 'entity_refernce',

  'entity_type' => 'node',

  'bundle'      => 'seminar',

  'required'    => false,

  'default_value' = [],

  'third_party_settings' = [...],  // Einfache settings durch eigene Module

  'itemDefinition' => {...},   // s.u. getItemDefinition()

  ...

];

$entity->field_short_title->getItemDefinition();

[

  'fieldDefinition => {...}   // s.o. getFieldDefinition()

  'definition => [

     'type' => "field_item:string",

     'settings' => [

        'max_length => 30,

        'is_ascii' => false,

        'case_sensitive' = false,

     ]

   ]

]

 

$entity->field_ref_person->getSettings(); //

[

  'handler' => "default:node",

  'handler_settings' => [

     'target_bundles' => [

        'person = "person"

      ]

     'sort' => [

        'field' => "_none"

      ]

     'auto_create' => false,

     'auto_create_bundle' => "",

    ]

  'target_type = "node"

]

$entity->field_ref_person->getSetting('handler'); // "default:node"

 

Entity eines Feldes:

$field=$entity->field_ref_person;

$field->getEntitiy(); // liefert wieder die obige $entity

 

Ausgabe (Viewmode)

$entity->get('field_title')->view('default'); // render-Array

 

 

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <drupal6>, <java>, <javascript>, <php>. The supported tag styles are: <foo>, [foo]. PHP source code can also be enclosed in <?php ... ?> or <% ... %>.

Weitere Informationen über Formatierungsoptionen

CAPTCHA
Nerd oder Robot ?
g_nauigk_it: