крюк установки модулей вызывает нарушение ограничений: Столбец 1048 "модуль" не может быть пустым: ВСТАВИТЬ В {разрешение роли} (rid, разрешение, модуль)
Я пытаюсь установить несколько разрешений при включении функции (новый тип контента).
По умолчанию этот тип контента отключен, и администратор может перейти к 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 answers
Похоже, что hook_install()
в файле .install для этой функции будет работать, если ее вызвать с помощью
drupal_flush_all_caches();
Я не уверен, что это лучшее решение, но, похоже, оно работает для меня