0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Drupal] 構成の値を取得する方法

Posted at

構成とは

  • モジュールの設定などを保存するための形式
  • 最初はDBに保存されるが、管理画面やDrushコマンドでDBからYAMLファイルにエクスポートしたり、逆にYAMLファイルからDBにインポートしたりできる(そのためGitなどを使って手軽に別々の環境にデプロイすることが可能)

エクスポートされた構成ファイルの例

uuid: 8a77ce85-83d7-4c18-ab99-9aa9f8e851ee
name: My Site
mail: my_site@example.com
slogan: ''
page:
  403: ''
  404: ''
  front: /
admin_compact_mode: false
weight_select_max: 100
langcode: ja
default_langcode: ja
_core:
  default_config_hash: yTxtFqBHnEWxQswuWvkjE8mKw2t8oKuCL1q8KnfHuGE
mail_notification: ''

既存の構成の値を取得する方法

たとえばサイト名を取得したいとする。

構成名を確認

まずはサイト名が記録されている構成の名前を取得する。

ファイルで確認する場合

  • 構成をエクスポートしてファイルに落とし込む
  • エディタでサイト名を検索(My Siteなど)
  • ヒットしたファイルの名前から.ymlを抜いたものが構成名(サイト名の場合、system.site.ymlに入っているので、構成名はsystem.site
  • ヒットしたファイルが多すぎてわからない場合は
    • サイト名を管理画面(/admin/config/system/site-information)から修正
    • drush cexで構成をエクスポート
    • エクスポートされる構成のリストに出てくる構成名、お前が犯人だぁ!
 [notice] Differences of the active config to the export directory:
+------------+-------------+-----------+
| Collection | Config      | Operation |
+------------+-------------+-----------+
|            | system.site | Update    |
+------------+-------------+-----------+


 The .yml files in your export directory (../config/sync) will be deleted and replaced with the active config. (yes/no) [yes]:
 > 

管理画面から確認する場合

  • /admin/config/development/configuration/single/export でなんかそれっぽい構成タイプ・構成名を選択して、サイト名が入ってるか確認(サイト名の場合、簡易校正 > system.site

構成のキーを確認する

構成の中を確認して、何というキーで保存されてるか確認。サイト名の場合、system.site.yml の内容は以下なので、nameがキーになる。

uuid: 8a77ce85-83d7-4c18-ab99-9aa9f8e851ee
name: My Site  # サイト名
mail: my_site@example.com
slogan: ''
page:
  403: ''
  404: ''
  front: /
admin_compact_mode: false
weight_select_max: 100
langcode: ja
default_langcode: ja
_core:
  default_config_hash: yTxtFqBHnEWxQswuWvkjE8mKw2t8oKuCL1q8KnfHuGE
mail_notification: ''

構成を取得する

構成名とキーがわかればあとは簡単。

$site_name = \Drupal::config('system.site')->get('name');

ネストされている値を取得したいときはドットでつなぐ。

$front = \Drupal::config('system.site')->get('page.front');
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?