Including defaults in config/installfor Drupal 8 , 9 , 10 , and 11

Last updated :  

When developing modules in Drupal, setting default configuration values is an essential practice. It ensures that upon installation, your module behaves as expected with pre-set configurations, reducing the need for immediate administrator intervention. This lesson focuses on using the config/install directory for defining these default settings and guarantees a seamless onboarding experience for your module users.

What is the config/install Directory?

The config/install directory is part of Drupal's configuration management system. It is used to store the default configuration files that are imported to the active configuration store during module installation. These files ensure that your module is configured with baseline settings right from the start.

Benefits of Default Configurations

  • Consistency: Provides a standard starting point for all instances of your module, promoting uniform behavior across different environments.
  • Efficiency: Reduces the need for manual setup after installation, allowing immediate functionality with pre-defined settings.
  • Clarity: Clearly documents the intended default state of your module, aiding in troubleshooting and maintenance.

Creating Default Configuration Files

Here, we will use a basic example to create default configuration for a simple module that stores an API key. We'll set up this default value in a YAML file located in the config/install directory of the module.

Steps to Define Defaults

The following is a step-by-step guide on how to set default configurations:

Step 1: Define the Configuration in Your Module

In your custom module directory, create the config/install directory if it does not already exist. Within this directory, you will define configuration files that set default values for your module settings.

 


mymodule.settings:
    api_key: 'default_api_key_value'

 

Save this configuration in a YAML file named mymodule.settings.yml within the config/install directory.

Step 2: Specify Configuration Schema

It is crucial that you also have a configuration schema (covered in a previous lesson) defined in your .schema.yml file for these settings, ensuring type and formatting consistency across configurations.

 


mymodule.settings:
    type: config_object
    label: 'My Module settings'
    mapping:
        api_key:
            type: string
            label: 'API Key'
            description: 'The API key for external service access.'

 

Step 3: Install Your Module

Install or enable your module using the Drupal interface or Drush. Upon installation, Drupal checks the config/install directory for any available configuration files and applies these settings to the site's active configuration.

Best Practices for Default Configurations

  • Documentation: Clearly document your default settings both within the YAML files and externally to ensure users understand the implications of these defaults.
  • Minimal Viable Product: Set defaults that align with the core functionality of your module, enabling basic operation out-of-the-box.
  • Contextual Relevance: Ensure defaults make sense in a global context, avoiding settings that are too specific to your development environment.

Conclusion

Incorporating default settings through the config/install directory is a critical strategy in Drupal module development. This approach allows developers to streamline the onboarding process for their modules while maintaining clarity and consistency in configuration management.

What's Next?

In our next lesson, we will cover adding validation for config settings, ensuring that the data stored through configuration forms meets specific criteria and maintains system integrity. Stay tuned to enhance your Drupal modules' reliability!