Skip to content

Instantly share code, notes, and snippets.

@crittermike
Last active August 11, 2023 10:39
Show Gist options
  • Save crittermike/2d2c6734c506d509505fa79142125757 to your computer and use it in GitHub Desktop.
Save crittermike/2d2c6734c506d509505fa79142125757 to your computer and use it in GitHub Desktop.
Importing Drupal 8 config programmatically
<?php
// Import arbitrary config from a variable.
// Assumes $data has the data you want to import for this config.
$config = \Drupal::service('config.factory')->getEditable('filter.format.basic_html');
$config->setData($data)->save();
// Or, re-import the default config for a module or profile, etc.
\Drupal::service('config.installer')->installDefaultConfig('module', 'my_custom_module');
// Or, import YAML config from an arbitrary file.
$config_path = drupal_get_path('module', 'my_custom_module') . '/config/install';
$source = new FileStorage($config_path);
$config_storage = \Drupal::service('config.storage');
$config_storage->write('filter.format.basic_html', $source->read('filter.format.basic_html'));
@bisonbleu
Copy link

bisonbleu commented Sep 8, 2021

@mike-potter I can't get your code to work: it seems the configs are not imported. Has anything changed since your post (Aug 19, 2020) that would account for that?
[update] The code works as suggested for simple configs e.g. filter.format.basic_html where I changed the name to 'BASIC HTML'. In my use case I'm trying to import a list of some 30+ configs. That's where my issue lies... maybe with unmet dependencies...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment