Drupal 8 - Liste zulässiger Werte (allowed values) in einem Feld programmatisch ergänzen

Mit folgendem Code ist es in Drupal möglich die Liste der zulässigen Werte für ein Feld zu ändern:

$field = \Drupal::entityTypeManager()
  ->getStorage('field_storage_config')
  ->load('entity.field_name');
$allowed_values = $field->getSetting('allowed_values');
$field->setSetting('allowed_values', $allowed_values);
$field->save();

Entscheidend hier der Inhalt von  ->load('entity.field_name');

Drupal 8 Service und IDE Autocompletion

Wenn man sich in Drupal einen Service auf die übliche Art und Weise holt, z. B. so:

// Returns a Drupal\Core\Datetime\DateFormatter object.
$date = \Drupal::service('date.formatter');

Dann hat man keine Autocompletion-Funktionalität in der IDE (hier phpstorm), wie man das sonst bei anders instanzierten Klassen nutzen kann.

Um auch hier Autocompletion nutzen zu können, kann man den Variablen-Typ per Kommentar (für die IDE) definieren, z. B. so:

Remove a base field from a custom content entity in Drupal 8

Drupal 8 comes with a new paradigm for the entity fields on content entities (there is also whole new thing of config entities, but this is not within the scope of this post). As with Drupal 7 there were properties and fields for an entity, now everything is a field (base fields, and field api fields via field UI). Similar to entity properties in D7, there are now base fields used in D8.

Endlos-Schleife bei Text-Element mit Ajax-Callback auf Event blur oder focusout

Wenn ein Drupal-Textfeld (input-Feld) einen Ajax-Callback verwendet und dieser auf die Events blur oder focusout reagiert, kann es zu einer Endlos-Schleife des Fokus-Verhaltens des Text-Felds kommen.

Der Ajax-Callback setzt den Fokus automatisch zurück auf das Feld welches das Ajax-Event (blur bzw. focusout) ausgelöst hat. Damit kommt es quasi zu einer Endlos-Schleife, in der der Fokus immer wieder auf dem Text-Feld landet und man nicht weiter im Formular navigieren kann.

Es gibt einen undokumentierten Parameter für den Ajax-Callback der dieses Verhalten aufheben kann:

Seiten