крюк установки модулей вызывает нарушение ограничений: Столбец 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

Я пробовал разные крючки, такие как включено и так далее, и у всех одна и та же проблема.

Как я могу отключить функцию с помощью по умолчанию, но все равно предоставляете разрешения некоторым пользователям? Что я делаю не так

Author: Quantico, 2016-12-12

1 answers

Похоже, что hook_install() в файле .install для этой функции будет работать, если ее вызвать с помощью

drupal_flush_all_caches();

Я не уверен, что это лучшее решение, но, похоже, оно работает для меня

 0
Author: Quantico, 2016-12-13 14:34:38