私は2つの基本フィールドを定義するcontribモジュールを維持していますが、これらはadmin config中に行われるため、インストール時にコンテンツタイプに追加されません。モジュールは
_// Add our base fields to the schema.
\Drupal::service('entity.definition_update_manager')->applyUpdates();
_
それはhook_install()
とhook_uninstall()
です。
この関数はcore 8.7で非推奨になりました。行を削除してインストールしてみましたが、正常に動作しているようです。
では、applyUpdates()
の呼び出しを削除するだけで問題ないでしょうか?
Drupal 8)の初期の段階ではフィールドが削除されないという問題があったと思いますが、今はすべてうまくいくと思います。
参考までに、変更レコードは https://www.drupal.org/node/3034742 です。
編集:構成インスペクターは部分的にしか役に立ちません。フィールドは、コンテンツタイプフォームの表示を保存した後にのみ表示されます。アンインストール後もフィールドは表示されますが、とにかくそうだったと思います(これに関連するコアの問題があります)
リンクした変更レコードは、hook_install()ではなく、すでにインストールされているモジュールの更新フックに関するものです。
インストールフックでapplyUpdates()
を必要としたことはありません。カスタムモジュールが新しいフィールドを追加する場合、モジュールが有効になると自動的に追加され、モジュールがアンインストールされると削除されます。データを含むベースフィールドにのみ問題がありましたが、Drupal 8.5以降に解決されました。この変更レコードを参照してください: 既存のデータを持つベースフィールドは、アンインストール済み 。