drupal8

Simple Ajax call with Drupal 8

Problem

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

Solution

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()

    ->getStorage('block')->loadByProperties([

Drupal 8 Error when synching THEMENAME.settings

Problem

I cam across an error when synching configurations from my Drupal 8 local environment to my development environment. The error is as folllows

Error: configuration THEMENAME.settings depends on the THEMENAME extension that will not be installed after import.

Not entirely sure if this is a bug in D8 core but the root cause was that it when exporting the configurations from my local environment the "Configuration manager" module in D8 core was picking up an odd looking configuration.