Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Определение и использование вашей собственной конфигурации в Drupal 8

24/04/2020, by maria

Основная тема: определение собственной конфигурации

Вы можете включить конфигурацию по умолчанию в свой модуль, основываясь на функциональности других модулей (типы узлов, представления, поля, текстовые форматы и т. Д.).
Например, модуль узла предоставляет конфигурацию типа узла, поэтому в своем собственном модуле вы настраиваете тип узла по умолчанию, который может поставляться с вашим модулем.

Возможно, вы захотите определить конфигурацию для ваших собственных плагинов, сущностей и настроек, которые, в свою очередь, могут использоваться другими модулями, так же как вы можете использовать конфигурацию типа контента узла. Drupal 8 упрощает определение вашей части конфигурации.

Файл конфигурации

Файлы конфигурации для вашего модуля находятся в подкаталоге config/install вашего модуля. Таким образом, /modules/example/config/install/example.settings.yml, если ваш модуль находится в /modules/example. Вы можете разместить здесь файлы конфигурации вашего модуля, используя формат файла YAML.

Хотя это не применяется, настоятельно рекомендуется называть файлы конфигурации, которые вы определяете для своего модуля, используя префикс собственного имени модуля: example.settings.yml, например, для параметров конфигурации. Не называйте файл settings.yml или system.settings.yml, поскольку это может конфликтовать с именами файлов в других местах. Если вы не будете следовать этому соглашению, команды Drush, такие как drush config: import, будут сбиты с толку.

Это также позволяет вам поставлять конфигурацию для других компонентов, например, пример типа узла, включая конфигурацию по умолчанию в ваш модуль, где файл конфигурации был node.type.example_mytype.yml, идентифицирующий файл конфигурации, который будет обрабатываться как тип узла узлом модуль.

Имя файла конфигурации (за исключением расширения файла .yml) также называется именем конфигурации в системе, и именно так вы можете обращаться к своей конфигурации из PHP API.

Структура файла конфигурации

Файл конфигурации должен использовать формат файла YAML. Вы можете структурировать свой собственный файл конфигурации в соответствии с вашими потребностями, нет никаких ограничений, кроме самого формата YAML для структуры. Например. если вам нужен параметр для вывода чего-то особенного из вашего контроллера страницы, файл может содержать ключ сообщения со строковым значением:

message: 'Hello'
langcode: 'en'

Рекомендуется включать код языка файла под ключом langcode. Это используется языковой системой, чтобы предложить переводимый текст для перевода. Ключ langcode зарезервирован для этой цели, и вы не должны использовать его на верхнем уровне файла для чего-либо еще.

Для перевода конфигурации должен быть установлен модуль преобразования конфигурации.

Для того чтобы сделать конфигурацию переводимой, вам нужно добавить еще два файла:

- /modules/example/config/schema/example.schema.yml
- /modules/example/example.config_translation.yml

Первый определяет схему пользовательской конфигурации. Мы определим example.settings как объект config_object, содержащий несколько полей. Каждое поле имеет тип: определение базового типа определяет, будет ли поле переводимым или нет (см. core.data_types.schema.yml). Например, path, содержащее внутренний путь Drupal, не переводимо, а text наоборот.

# /modules/example/config/schema/example.schema.yml
example.settings:
  type: config_object
  label: 'Example config'
  mapping:
    message:
      type: text
      label: 'Message'

Второй добавляет ссылку на /admin/config/regional/config-translation в соответствующую форму перевода:

# /modules/example/example.config_translation.yml
example.admin.config:
  title: 'Example module'
  base_route_name: example.admin.config
  names:
    - example.settings

По соглашению ключ совпадает с именем базового маршрута: example.admin.config - это имя маршрута к форме конфигурации администратора вашего модуля. Имена перечисляют все ключи конфигурации, которые редактируются в форме, в этом случае пользовательская конфигурация определена в схеме выше.

Файл может включать более сложные списки и пары ключ / значение в древовидной структуре. см., например, файл views.view.content.yml для примера файла конфигурации с небольшой сложностью.

Трансляция конфигурации автоматически добавляет вкладку «модуль перевода» в форму конфигурации модуля, однако она может не отображаться, если это единственная доступная вкладка. Чтобы добавить вкладку «по умолчанию» для формы конфигурации, нам нужно добавить еще один файл example.links.task.yml. (См. Определенные модулем локальные задачи.)

// example.links.task.yml
example.admin.config:
  route_name: example.admin.config
  title: Settings
  base_route: example.admin.config

Использование конфигурации

Drupal 8 поставляется с PHP API для чтения и записи этой конфигурации. Самый простой способ использовать это - статический метод Drupal::config ():

$config = \Drupal::config('example.settings');
// Will print 'Hello'.
print $config->get('message');
// Will print 'en'.
print $config->get('langcode');

Если вы хотите отредактировать конфигурацию и обновить ее новым значением, вы можете использовать метод \ Drupal::service('config.factory') ->getEditable ():

$config = \Drupal::service('config.factory')->getEditable('example.settings');

// Set and save new message value.
$config->set('message', 'Hi')->save();

// Now will print 'Hi'.
print $config->get('message');

Смотрите также

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.