Drupal is a registered trademark of Dries Buytaert

Why re-implement all time the same thing ? That what I said to me when I started to work with Ajax Callback and Ajax Commands.
So instead of re-implements for each case a new JS and solution to allow me to display some content generated by Ajax Command, I decided to make a generic solution.

To work with Ajax Command we need 3 things :

  • The JS which will request and execute the Ajax Command
  • The Controller which build the Ajax Response and what to do or display
  • The connector to link the JS to fields.

So the JS and the connector can be generic. The controller not because the role of a Controller is to do specific stuffs.

Features

This module provide you :

  • A generic JS which request and execute an Ajax Request.
  • A Formatter which alter the field type Link to allow us to plug the Ajax on a field.

How it works ?

The Formatter will slightly alter your field Link by :

  • Transforming the render element form link (a) to span (span).
  • Adding 2 new attributes to the render element :
    • data-execute-ajax-callback-field-formatter-url : Filled with the URL from the field link
    • data-execute-ajax-callback-field-formatter-id : Build with the following pattern "[entity_type]--[entity_id]-[field_name]--[delta]" with :
      • entity_type : The type of the entity containing the field
      • entity_id : The ID of the entity containing the field
      • field_name : The field name.
      • delta : The element's delta.

Thanks to attributes placed by the formatter the JS can be call and performs Ajax Request.

Post-Installation

Once the module installed, you should find a new Formatter for field type Link. You'll just have to use it.
To do it you have to set your field link following this rules :

  • In the URL you'll pass the url to your controller which response an Ajax Response.
  • In text part you'll set the default value

And you just have to create a new controller which return Ajax Response.

Supporting this Module

If you want to support this module, use it, share it and feel free to suggest improvements !

Activity

Total releases
2
First release
Feb 2025
Latest release
1 year ago
Release cadence
0 days
Stability
50% stable

Releases

Version Type Release date
1.1.0 Stable Feb 10, 2025
1.1.x-dev Dev Feb 10, 2025