Early Bird Registration for DrupalCon Portland 2024 is open! Register by 23:59 PST on 31 March 2024, to get $100 off your ticket.
Each configuration managed by the Configuration Management module is controlled by a handler. For example, the content types configurations are controlled by the ContentTypeConfiguration class.
You can define the controllers for your custom configurations by following these simple steps:
Create a module and implement hook_configuration_handlers_alter()
/**
* Implements hook_configuration_handlers_alter().
*
* @see configuration_configuration_handlers().
*/
function yourmodule_configuration_handlers_alter(&$handlers) {
$handlers['foo'] = '\Drupal\yourmodule\Config\FooConfiguration';
}
Create a FooConfiguration.php file in yourmodule/lib/Drupal/yourmodule/Config.
The class must extend the Configuration Class or a child class of it. This is a really simple example of how this file should look:
/**
* @file
* Definition of Drupal\configuration\Config\FooConfiguration.
*/
namespace Drupal\configuration\Config;
use Drupal\configuration\Config\Configuration;
use Drupal\configuration\Utils\ConfigIteratorSettings;
class FooConfiguration extends Configuration {
/**
* Overrides Drupal\configuration\Config\Configuration::isActive().
*/
public static function isActive() {
return module_exists('yourmodule');
}
/**
* Overrides Drupal\configuration\Config\Configuration::getComponentHumanName().
*/
static public function getComponentHumanName($component, $plural = FALSE) {
return $plural ? t('Fooooo') : t('Foo');
}
/**
* Overrides Drupal\configuration\Config\Configuration::getComponent().
*/
public function getComponent() {
return 'foo';
}
/**
* Overrides Drupal\configuration\Config\Configuration::supportedComponents().
*/
static public function supportedComponents() {
return array('foo');
}
/**
* Overrides Drupal\configuration\Config\Configuration::getAllIdentifiers().
*/
public static function getAllIdentifiers($component) {
$objects = db_query("SELECT machine_name, title FROM {foo}")->fetchAll();
$return = array();
foreach ($objects as $object) {
$return[$object->machine_name] = $object->title;
}
return $return;
}
/**
* Implements Drupal\configuration\Config\Configuration::prepareBuild().
*/
protected function prepareBuild() {
$this->data = foo_load($this->getIdentifier());
return $this;
}
/**
* Implements Drupal\configuration\Config\Configuration::saveToActiveStore().
*/
public function saveToActiveStore(ConfigIteratorSettings &$settings) {
foo_save($this->getData());
$settings->addInfo('imported', $this->getUniqueId());
}
}
Comments
namespace should be your module
namespace Drupal\configuration\Config;
should be
namespace Drupal\yourmodule\Config;