MODULE.settings.ymlを定義するときに、MODULE.schema.ymlは必要ですか?


8

MODULE.schema.ymlを定義するときに必要MODULE.settings.ymlですか?MODULE.schema.ymlinstall / schemaからファイルを削除しても動作するようです。

回答:


10

絶対に必要というわけではありませんが、用意することを強くお勧めします。

デフォルトでは、Drupalはスキーマを検証しませんが、テストでは検証します。提供されたexample.settings.local.php / development.services.ymlを使用すると、スキーマが有効になる問題があります。そのため、インストール時にエラーは表示されませんが、最初のテストを作成するとエラーが表示されます。

現在は、保存された構成が正しいデータ型(たとえば、整数ではなく浮動小数点数)であることを確認するために使用されています。それを正しく行わないと、構成を変換したり、機能を壊したりする可能性があります。たとえば、設定フォームを生成するモジュールなど、さらに多くのことが後に続くかもしれません。


1

settings.ymlは、モジュールがインストールされた後、configでデフォルト値を開始したい場合にのみ必要です。


schema.ymlはデータベーステーブルとはまったく関係がありません。つまり、hook_schema()です。
Berdir 2017年

あなたは正しい、私は、彼らが混乱しましたている私は私の答えに編集
Fons Vandamme

1

MODULE/config/install/MODULE.settings.yml ファイルは必須ではありません。

MODULE.settings.ymlファイルは基本的にデフォルト値の設定に使用されます。そしてそれはモジュールを初めてインストールするときにのみ影響します。

の変更を反映するために使用できる2つのオプションMODULE.settings.yml

  1. アンMODULEインストールして、もう一度インストールしてください!
  2. MODULE.installファイルを使用して hook_update_N(&$sandbox)

例:ファイル名: MODULE/MODULE.install

    /**
     * Write a line or two here about what the updates are for.
     * This is shown to users on the update.php page.
     */
    function mymodule_update_8001(&$sandbox) {
      $config_factory = \Drupal::configFactory();
      $default_value = 'Test';
      $config_factory->getEditable('MODULE.settings')->set('config_field_key', $default_value)->save();
    }

参照リンク


settings.ymlが更新された場合、モジュールをアンインストールして再インストールする必要があるということですか?
Jahng、2017年

私の更新された答えを確認してください、それがあなたを助けることを願っています。
AshwinP 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.