機能が有効になっているときにいくつかの権限を設定しようとしています(新しいコンテンツタイプ)。デフォルトでは、このコンテンツタイプは無効になっており、管理者は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
有効などの別のフックを試しましたが、すべて同じ問題があります。
機能をデフォルトで無効にしながら、一部のユーザーに権限を付与するにはどうすればよいですか?私は何を間違っていますか
機能の.installファイルのhook_install()
は、
drupal_flush_all_caches();
これが最善の解決策かどうかはわかりませんが、うまくいくようです