Today I want to introduce you to the lesser known "autocompleteclose" event that you can use for Ajax callbacks in Drupal's Form API.
When I was defining an entity_autocomplete field in a form and tried to add an Ajax callback, that should modify other form fields based on the selection of the autocomplete field, my first implementation had got the blemish to react on the "change" event, meaning that after you have selected an entity via the autocomplete field, you first would have to leave the field (e.g by pressing the tab key or click/tabe somewhere else on the page). I was then trying to find an appropriate event that is fired upon selecting a value from the autocomplete field.
I finally found the solution in Drupal's issue queue. So here's a short example:
$entity_form['my_wonderful_field'] = [
'#type' => 'entity_autocomplete',
'#title' => t('Choose xy'),
'#target_type' => 'node',
'#selection_settings' => [
'match_operator' => 'CONTAINS',
],
'#ajax' => [
'callback' => [$this, 'onNodeSelection'],
'wrapper' => $wrapper_id,
'event' => 'autocompleteclose',
],
'#maxlength' => 512,
];
Wanted - your help!
In a similar case, I'm currently banging my head against the wall: I'm using Entity Browser for a certain reference field, and I also want to react on the selection. But there's one big difference in this use case: the (hidden) field that is defined and used by Entity Browser to hold the selected entity ID, of course already defines its own #ajax callback. You can't add a second one. Although being able to identify the selection event within my form cleanly, I find no way to react on it, as the fields I want to change, are not part of the wrapper element that is replaced by the Ajax call. So changing anything there would not result in any visible change in the UI.
What I try to avoid is to fully replace the Ajax callback and repeat the logic of the Entity Browser's original callback + add my own stuff. Additionally, I still would have to see if there's a chance to unite them all into a single wrapper element - if not, I'd have to additonally build my own Ajax response and replicate Drupal's internal logic here.
I've opened a support request in Entity Browser's issue queue with a more detailed description of my problem. I'd really appreciate any help!
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Eine Application Programming Interface ist eine standardisierte Programmierschnittstelle, über die Softwareanwendungen Daten und Funktionen kontrolliert miteinander austauschen können. Sie legt fest, welche Anfragen ein System akzeptiert, in welchem Format Informationen übermittelt werden und welche Antworten zurückgegeben werden. In der Webentwicklung ermöglicht sie beispielsweise die Anbindung von ERP-, CRM- oder KI-Systemen an eine Drupal-Plattform und bildet damit eine wichtige Grundlage für skalierbare, integrierte digitale Lösungen.
Eine Entity ist ein eindeutig identifizierbares, strukturiertes Datenobjekt innerhalb eines Softwaresystems. In Drupal werden beispielsweise Inhalte, Benutzerkonten, Medien und Taxonomiebegriffe als Entities verwaltet; sie besitzen eine eigene ID, definierte Felder und können über die Entity API bearbeitet sowie mit weiteren Systemen verknüpft werden. Dadurch lassen sich flexible und skalierbare Datenmodelle für Websites, Portale und Enterprise-Anwendungen umsetzen.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Eine Entity ist ein eindeutig identifizierbares, strukturiertes Datenobjekt innerhalb eines Softwaresystems. In Drupal werden beispielsweise Inhalte, Benutzerkonten, Medien und Taxonomiebegriffe als Entities verwaltet; sie besitzen eine eigene ID, definierte Felder und können über die Entity API bearbeitet sowie mit weiteren Systemen verknüpft werden. Dadurch lassen sich flexible und skalierbare Datenmodelle für Websites, Portale und Enterprise-Anwendungen umsetzen.
Eine Entity ist ein eindeutig identifizierbares, strukturiertes Datenobjekt innerhalb eines Softwaresystems. In Drupal werden beispielsweise Inhalte, Benutzerkonten, Medien und Taxonomiebegriffe als Entities verwaltet; sie besitzen eine eigene ID, definierte Felder und können über die Entity API bearbeitet sowie mit weiteren Systemen verknüpft werden. Dadurch lassen sich flexible und skalierbare Datenmodelle für Websites, Portale und Enterprise-Anwendungen umsetzen.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Eine Entity ist ein eindeutig identifizierbares, strukturiertes Datenobjekt innerhalb eines Softwaresystems. In Drupal werden beispielsweise Inhalte, Benutzerkonten, Medien und Taxonomiebegriffe als Entities verwaltet; sie besitzen eine eigene ID, definierte Felder und können über die Entity API bearbeitet sowie mit weiteren Systemen verknüpft werden. Dadurch lassen sich flexible und skalierbare Datenmodelle für Websites, Portale und Enterprise-Anwendungen umsetzen.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.
Asynchronous JavaScript and XML (AJAX) bezeichnet eine Webentwicklungstechnik, bei der JavaScript Daten asynchron vom Browser an einen Server sendet und Antworten empfängt, ohne die gesamte Webseite neu zu laden. Dadurch lassen sich Inhalte dynamisch aktualisieren und interaktive Benutzeroberflächen realisieren, etwa bei Suchfeldern oder Formularen. Obwohl der Begriff XML nennt, werden heute häufig JSON-Daten verwendet; AJAX bildet zudem eine Grundlage moderner Webanwendungen und API-Integrationen.