YAML – это формат сериализации данных, который является мощным и простым для чтения и понимания. В Drupal 8 он используется, когда Drupal нужна информация, но не требуется выполнять PHP. Одна из причин, по которой YAML был выбран для Drupal 8, заключается в том, что он уже используется в Symfony.
Файл YAML состоит из пар ключ и значение, разделенных двоеточием. Вот как выглядит одна строка из файла YAML:
Пара ключ-значение для этого примера:
name: Welcome
Файлы YAML заменяют файлы .info
В Drupal 7 файлы .info использовались для предоставления информации Drupal о модулях и темах. Эта информация включает в себя его удобочитаемое имя, машинное имя, описание, номер версии, любые зависимости и так далее. Без файла .info Drupal не знал бы, что существует модуль или тема.
Drupal 8 использует файлы YAML (.yml) вместо файлов .info.
Вот пример кода в файле YAML. Это код для файла info.yml для модуля.
name: Welcome type: module description: Display a message when a user logs in core: 8.x package: Custom
Если вы уже занимались разработкой для Drupal 7, информация будет выглядеть знакомо. Одно из ключевых отличий между Drupal 7 и 8 состоит в том, что пара ключ-значение разделяется знаком равенства («=«) в формате INI, используемом в Drupal 7, и двоеточием
(«:») в формате YAML, используемом в Drupal. 8. После двоеточия должен быть пробел.
YAML-файлы определяют маршруты
В Drupal 8 файлы YAML не просто предоставляют информацию о модулях и темах. Как уже упоминалось выше, они также используются для определения пунктов меню, вкладок, маршрутов, сервисов и так далее.
Вот пример маршрута модуля hello hello.routing.yml :
hello.content: path: '/hello' defaults: _controller: 'Drupal\hello\Controller\FirstController::content' _title: 'Hello world' requirements: _permission: 'access content'
Иерархия
В приведенном выше примере некоторые строки имеют отступ. Это связано с тем, что файлы YAML поддерживают иерархию с помощью отступов.
Вот еще один пример:
first_module.admin: title: 'First module settings' description: 'A basic module to return hello world' parent: system.admin_config_development route_name: first_module.content weight: 100
В вышеприведенном YAML все строки ниже first_module.admin имеют отступ, что означает, что они вложены в first_module.admin . В YAML это называется составным типом данных, который звучит страшно, но во многом похож на массив в PHP. Это означает, что все, что указано в first_module.admin, является его дочерним элементом.
Это будет эквивалентно следующему массиву PHP:
array ( 'first_module.admin' => array( 'name' => 'First module settings', 'description' => 'A basic module to return hello world', 'parent' => 'system.admin_config_development', 'route_name' => 'first_module.content', 'weight' => '100', ), );
Надеюсь, картина о том как использовать YAML в друпал немного прояснилась, приобрела черты.