Вопрос

Мой последний модуль, кажется, не загружается. Вот краткое изложение:

У меня есть реализация файла .module hook_menu() а также hook_views_data().

Оба, кажется, работают нормально, после включения модуля: навигация по пути меню работает, как и ожидалось, и мой новый тип Base Base.

У меня есть реализация файла .install hook_install() hook_uninstall() а также hook_schema()

Ни одна из функций в файле установки не работает. Новые таблицы не присутствуют после включения, и нет никаких зарегистрированных ошибок.

Если я вручную вызову функций в файле .install с Devel, я получаю неопределенную ошибку. Я могу только предположить, что файл установки не загружается.

Запуск файла .Install через командную строку PHP интерпретатор не поднимает никаких синтаксических ошибок.

Я не могу объяснить, почему файл не загружается в область при включении модуля.

Я бы признателен за любую помощь.

Это было полезно?

Решение

Оказывается, это была ошибка в hook schema() К сожалению, функция не удалась более или менее молча. Например :

'description' => array(
                'type' => 'varchar',
                'size' => 'normal',
                'not null' => TRUE,
                'description' => 'Description of vaule type.',
        ),

Не удалось.

'description' => array(
                'type' => 'varchar',
                'size' => 'normal',
                'length' => 255, 
                'not null' => TRUE, 
                'default' => '',
                'description' => 'Description of vaule type.',
        ),

Работал.

Проблема усугублялась моим ошибочным предполагаемым представлением о том, что отключение и повторное определение модуля вызовет установку, а не удаление модуля из системной таблицы.

Еще раз спасибо всем, кто предоставил обратную связь.

Другие советы

Если вы добавили файл установки после включения модуля: отключите модуль, удалите модуль, а затем включите модуль.

hook_install() выполняется только в первый раз, когда модуль включен, и если он включен после удаления.

Просто хочу добавить этот ответ для будущего ссылки, так как мой файл .Install не загружался, и мне потребовалось некоторое время, чтобы выяснить, что случилось, так что, надеюсь, это может спасти кого -то боли!

Я определил некоторые функции обновления, например, hook_update_7101, но когда я перешел на update.php, это говорило «не ожидая обновлений». Я добавил несколько операторов отладки и обнаружил, что мои функции не отображались, когда был сделан вызов get_defined_functions () (это функция PHP). Как будто PHP не знал о функциях обновления.

Оказывается, в Drupal было две версии моего модуля. Один AT/Sites/All/MODULES и другой AT/SITES/SITENAME/MODULES. Таким образом, более старая версия модуля на сайтах/SiteName переопределяла мою более новую версию на Sites/All.

Так что итог:

Check whether there are 2 versions of your module - one at sites/all/modules and another at sites/sitename/modules

Я удалил более старую версию формы /сайтов /сайтов модуля, и обновления появились, как и ожидалось!

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

Чтобы включить файл установки вашего модуля, вы должны включить его в первую очередь, например:

module_load_include('install', 'my_module');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top