Implementing own handlers
You are browsing documentation for an older version of Drupal, which is not supported any longer, and the information may not be correct. See current documentation for Contributed modules
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());
}
}
Help improve this page
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion