web-dev-qa-db-ja.com

構成を通じてモジュールを有効にする方法は?

機能、構成インストーラー、または類似のモジュールやプロファイルに関与することなく、モジュールをcore.extension.ymlファイルに追加してモジュールを有効にしようとしています。モジュールは有効になっていますが、module_folder/config/installまたはmodule_folder/config/optionalの下のデフォルト構成はインポートされません。これを行う方法はありますか?

6
duru

Drupalにモジュールがインストールされていることを伝えているだけなので、これは機能しませんが、モジュールをインストールすると、構成をインポートして.install関数を実行するために実行する必要がある他のプロセスがあります。 。

ただし、他のすべてのモジュールをインストールする新しいモジュールを作成し、.installファイルを作成して、これを内部に追加できます。

/**
 * Implements hook_install().
 */
function MY_MODULE_install() {
  $modules_list = [
    'nbsp',
    'typogrify',
    'other_module',
  ];
  \Drupal::service('module_installer')->install($modules_list);
  drupal_flush_all_caches();
}

次に、このモジュールをインストールするだけで、他のすべてのモジュールがインストールされます。

4

可能な代替策は、モジュールのmymod.info.yml記述の依存関係セクションを使用することです。モジュールを有効にすると、依存関係が有効になります。

name: My Module
description: Provides something great
core: 8.x
type: module
dependencies:
  - views

既存のモジュールのコード変更により特定のモジュールが有効になっていることを確認する必要がある場合は、更新システムを使用します。例えば。 module.installerサービスを呼び出すmymod.installファイルにhook_update_N関数を追加します。

/**
 * Install file module.
 */
function mymod_update_8001() {
  \Drupal::service('module_installer')->install(['file']);
}

参考:インストールされているモジュールをインストールしようとしても問題は発生しません。

Core.extensionsにアクセスして通常のシステムの外に出ようとすることは、おそらく長期的に維持できるオプションではありません。

2
CG Monroe