web-dev-qa-db-ja.com

インストール時にモジュールのオプションのフィールド設定がインポートされない

次のコンテンツを含むconfig/optionalフォルダを含むモジュールがあります。

paragraphs.paragraphs_type.my_paragraph_id.yml
field.field.paragraph.my_paragraph_id.field_my_field.yml
field.storage.paragraph.field_my_field.yml
core.entity_form_display.paragraph.my_paragraph_id.yml
core.entity_view_display.paragraph.my_paragraph_id.yml

これらのファイルは、uuidのない既存のインストールからエクスポートされています。モジュールを有効にしても、モジュールparagraphsがまだ有効になっていないため、構成がインポートされません。 paragraphsを有効にすると、期待どおりに段落タイプmy_paragraph_idが作成されます。既存のフィールドfield_my_fieldに基づいて新しいフィールドを作成できるため、field_my_fieldのフィールドストレージも作成されます。ただし、フィールドは段落自体には作成されません。

設定ファイルをconfig/installに移動してみましたが、その後は期待どおりに機能しました。フィールドは問題なく段落に作成されます。ただし、モジュールparagraphはオプションである必要があり、その場合にのみ構成を作成する必要があります。そのため、オプションにする必要があります。

なぜconfig/optionalはフィールドをインストールしないのですか?

5
Ambidex

オプションの構成は、現在インストールされているモジュールに明示的に依存している場合にのみインストールされます。そうしないと、特定のサイトで削除することを選択した場合でも、モジュールをインストールするたびにその構成が再インストールされます。

その欠点は、インストールされているモジュールに依存する構成に依存する構成の灰色の領域がいくつかあり、これがこれによって検出されないことです。 shouldも機能しますが、明らかにこの場合は機能しません。

回避策として、インポートされていない構成の段落モジュールに強制された依存関係を追加すると、機能するはずです。 https://www.drupal.org/node/2404447 を参照してください

6
Berdir