module development

Simple Ajax call with Drupal 8


I want to add a link to my content page that will dynamically change/replace content on the page using AJAX.


The solution here is add a route and to write a call back that will respond accordingly. The only difference here is 

  • The link is not a a normal link but a link that will load using a AJAX call
  • The Response here is also not normal it will be a  AjaxResponse


So lets see how we can do this

The core_version_requirement key in info.yml file

The core_version_requirement key specifies what versions of Drupal that the module is compatible with.


name: Example
type: module
core: 8.x
core_version_requirement: ^8 || ^9


The above example  says that the module is compatible with Drupal 9 and Drupal 9. Notice that the core key is still compulsory here

The chnage

After Drupal 8.8.0 we will not need the core key anymore.



Drupal 8 - get blocks assigned to a region

Problem: There is no specific function in Drupal 8 which we can use to get all blocks assigned to a region. We used to have a function called block_get_blocks_by_region in Drupal 7 to do this


Solution : Although we don't have a specific function we have the tools in Drupal 8 s Object oriented hierarchy to do the same. Here is the code


function my_module_get_blocks_by_region($region) {

  $blocks = \Drupal::entityTypeManager()