D8 Api Configuración - pierregermain/MyDrupal GitHub Wiki
Variables de estado (State API)
Son cambiantes en el tiempo, no pueden resetear y no afectan al funcionamiento de drupal.
Ejemplos:
- Última ejecución del cron (variable system.cron_last)
- Modo de mantenimiento (variable system.maintenance_mode)
Se pueden ver desde:
- /devel/state
- usando drupal console con
drupal dst
Obtener variables de estado
$val = \Drupal::state()->get('key');
$val = \Drupal::state()->get('key', 'default');
// Obtener varias variables a la vez
$keys = ['system.maintenance_mode', 'system.cron_last'];
$pairs = \Drupal::state()->getMultiple($keys);
Guardar variables de estado
\Drupal::state()->set('module.variable',123);
// Asignación múltiple
$keyvalues = [
'module.variable1' => 123,
'module.variable2' => 'foo',
];
\Drupal::state()->setMultiple($keyvalues);
Borrado de variables de estado
\Drupal::state()->delete('module.variable');
// Borrar varias variables a la vez
$keys = ['module.variable1', 'module.variable2'];
\Drupal::state()->deleteMultiple($keys);
Configuración simple
La configuración activa de guarda en la tabla config.
Nomenclatura
módulo.subsistema.yml
Cargar configuración (sólo lectura)
Ejemplo: Cargar la configuración relacionada con el fichero de configuración system.date.yml
:
$config = new ImmutableConfig;
$config = \Drupal::config('system.date');
Cargar configuración (para escritura y lectura)
$config = \Drupal::service('config.factory')->getEditable('system.date');
Cargar configuración de variable anidada
Ejemplo:
$config = \Drupal::config('system.performance');
$max_age = $config->get('cache.page.max_age');
se corresponde en yml a:
cache:
page:
max_age: 0
Carga variable con hijos
Al cargar una variable con hijos nos lo devuelve cómo array.
Ejemplo:
$cache = $config->get('cache');
no cargaría
$cache => Array (
[page] => Array (
[max_age] => 0
)
)
Escritura de variable de configuración
// Obtener config para lectura/escritura
$config = \Drupal::service('config.factory')->getEditable('system.date');
//asigna un valor único
$config->set('country.default', 'US');
//asigna un array
$timezone = ['warn' => TRUE, 'default' => 1];
$config->set('timezone.user', $timezone);
$config->save();
Eliminar configuraciónes individuales
Una vez eliminado el valor sera el por defecto.
$config = \Drupal::service('config.factory')->getEditable('system.date');
$config->clear('country.default');
$config->save();
Eliminar configuraciones enteras
$config = \Drupal::service('config.factory')
->getEditable('system.date')->delete();
Esquema de configuración (Schema)
Se guarda en módulo.schema.yml en la ruta /config/schema https://www.drupal.org/node/1905070