web-dev-qa-db-ja.com

modules_installフックにより制約違反が発生する:1048列 'module'はnullにできません:INSERT INTO {role_permission}(rid、permission、module)

機能が有効になっているときにいくつかの権限を設定しようとしています(新しいコンテンツタイプ)。デフォルトでは、このコンテンツタイプは無効になっており、管理者はstructure/featuresにアクセスして有効にできます

docroot/profile/my_profile/features/fooの下に、次のfoo.installファイルを作成しました

function foo_modules_installed($modules) {
 if (in_array('foo', $modules)) {
  $perms = array(
    'create foo content',
    'edit own foo content',
    ); 
      user_role_grant_permissions(user_role_load_by_name('publisher')->rid, $perms);
      user_role_grant_permissions(user_role_load_by_name('administrator')->rid, $perms);
}
}

structure/featuresにアクセスして有効にすると、次のエラーが表示されます

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'module' cannot be null: INSERT INTO {role_permission} (rid, permission, module

有効などの別のフックを試しましたが、すべて同じ問題があります。

機能をデフォルトで無効にしながら、一部のユーザーに権限を付与するにはどうすればよいですか?私は何を間違っていますか

1
Quantico

機能の.installファイルのhook_install()は、

drupal_flush_all_caches();

これが最善の解決策かどうかはわかりませんが、うまくいくようです

0
Quantico