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