Skip to content

Switch Case Default

Version v2

Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## Import recipe
composer require drupal-eca-recipe/eca_lib_0004

# Enable recipe with Drush (requires version 13 or later):
drush recipe ../recipes/eca_lib_0004

# Enable recipe without Drush:
cd web && php core/scripts/drupal recipe ../recipes/eca_lib_0004

# Rebuilding caches is optional, sometimes required:
drush cr

Purpose

Demonstrate how typical switch-case PHP constructors could be simulated in ECA models - similar to if-elsif-else statements.

The model is similar to what you would normally do in PHP like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
switch ($field_select) {
  case 'a1':
  case 'a2':
  case 'a3':
  case 'c7':
    // Set Status to 3
    $field_status = 3;

  case 'b1':
  case 'b2':
    // Set Status to 4
    $field_status = 4;

  default:
    // Set default Status
    $field_status = 2;
}

Important note: after the action "Set default Status to 2", ECA first checks the conditions of ALL successors; only then does it execute the actions that follow for those conditions that return TRUE. That's why the "no condition" link has no condition, as we want to execute that path in any case, but not before the top two paths had a chance to change the status. Therefore the condition, if the status is still 2, happens with a delay, i.e. really after everything else has been completed.

Dependencies

  • config
    • node.type.article
  • module
    • eca_base
    • eca_content

Used plugins

Events

Conditions

Actions

Changelog

v1

Initial version

v2

Add the "no condition" for the default value