D8: Configurations

Photo by Abigail Keenan on Unsplash

Data

Content

Configuration

State

active storage

file storage

db tables: config, config_snapshot

$config_directories['sync'] = '../config/sync';

sync

initial

/modules/*/my_module/config/install/*
/modules/*/my_module/config/optional/*

/themes/*/my_theme/config/install/*
/themes/*/my_theme/config/optional/*

Active storage

Configuration

mysql> desc config;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| collection | varchar(255) | NO   | PRI |         |       |
| name       | varchar(255) | NO   | PRI |         |       |
| data       | longblob     | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> select * from config where name = 'system.theme';
+------------+--------------+-------------------------------------------+
| collection | name         | data                                      |
+------------+--------------+-------------------------------------------+
|            | system.theme | a:3:{s:5:"admin";s:5:"seven";s:7:"......."|
+------------+--------------+-------------------------------------------+
1 row in set (0.00 sec)

Classes

Configuration

Config Object

Config Entity

uuid: 01d9a33d-204f-4b0a-b581-02655bfc4bf5
name: Pizza
mail: nyph1337@gmail.com
slogan: ''
page:
  403: ''
  404: ''
  front: /node
admin_compact_mode: false
weight_select_max: 100
langcode: en
default_langcode: en
_core:
  default_config_hash: yXadRE77Va-G6dxhd2kPYapAvbnSvTF6hO4oXiOEynI
langcode: en
status: true
dependencies:
  module:
    - node
    - user
id: content
label: Content
module: node
description: 'Find and manage content.'
tag: default
base_table: node_field_data
base_field: nid
core: 8.x
display:
  default:
    display_options:
      access:
        type: perm
        options:
          perm: 'access content overview'
      cache:
        type: tag
      query:
        type: views_query
      exposed_form:
        type: basic
        options:
          submit_button: Filter
          reset_button: true
          reset_button_label: Reset
          exposed_sorts_label: 'Sort by'
          expose_sort_order: true
          sort_asc_label: Asc
          sort_desc_label: Desc

Working with configs

// Read config with machine name 'system.site' 
// and get property 'name'
// initial configuration stored 
//    at 'core/modules/system/config/install/system.site.yml'
// sync (when enabled) - 
//    at 'config/sync/system.site.yml'
$this->config('system.site')->get('name');

$frontPage = $this->configFactory->get('system.site')
  ->get('page.front');

Configuration

States

\Drupal::state()->set('key','value');

$values = [
  'key' => 'value',
  'key2' => 'value2'
];
\Drupal::state()->setMultiple($values);

\Drupal::state()->delete('key');

Typed Data

Updates

/**
 * Convert syslog.settings.facility to an integer.
 */
function syslog_update_8400() {
  $config = \Drupal::configFactory()->getEditable('syslog.settings');
  $facility = (int) $config->get('facility');
  $config->set('facility', $facility)->save(TRUE);
}

Founder @

Co- Founder @

Vladyslav Moyseenko, a.k.a vlad.dancer

&

D8 School: Configuration

By Vlad Moyseenko

D8 School: Configuration

  • 571