Getting Started¶
Config Actions provides a pluggable framework for easily manipulating configuration data via simple YAML files with the goal of creating truly reusable software components in Drupal.
Example use cases include:
- Templates
the ability to provide a configuration template file containing variables that can be reused and replaced to create new configuration. For example, a template for adding a certain field to a content type where the content type isn’t yet known.
- Override
the ability to easily “override” configuration provided by core or other modules. These is not a “live” overrides system but simply a method to import changes into the config system.
NOTE: This is a Developers module and requires creating custom modules containing YAML files that contain the config actions to be performed.
Action Files¶
Actions are listed in a config_actions.yml
file located in the top-level folder
of your custom module. When your module is enabled, the actions in this file
will be executed.
@TODO: A drush interface allows you to execute actions manually.
@TODO: When Drupal Updates are run, any new actions added to your file are executed automatically.
An action is a list of “option” keys and values. Various global options are available, and additional options can be added by specific plugins.
Nested Actions¶
Actions can be nested within each other. Using the actions
option you can
list additional sub-actions to be executed. All options from the main parent
action are inherited in each sub-action but can be overridden by the sub-action.
For example, the top-level action can specify the source
and dest
options
then each sub-action could specify different plugins, or different replace
option values, or even override with different source
or dest
values.
This allows related actions to be grouped and reduces the amount of repeated
text between similar actions.
When nesting or naming actions, each new action within the actions
list
requires a unique id key.
For example:
actions:
myaction1:
option1: value1
option2: value2
myaction2:
option1: value1
option2: value2
...