Вы здесь

Область видимости функций в модулях Drupal

0

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

Пример - field_info_instance

Версия Drupal: 
7.x
Вопрос задан 24.10.2015 - 14:47

Ответы

3

Ответ на вопрос содержится в описании функции: https://api.drupal.org/api/drupal/modules!field!field.info.inc/function/...
Код функции находится в файле field.info.inc, а inc-файлы не включаются автоматически - иначе весь код Друпала на каждый запрос надо поднимать. Нужно включить inc-файл с помощью include, require и т.п. тогда функция будет доступна.

Соответственно, вопрос не в том, откуда вызывается функция, из коллбэка меню или из того что вы называете телом модуля. Вопрос в том, где определена вызываемая функция.

Ответ дан 24.10.2015 - 17:57
-2

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

Хотя я сам это предположение не проверял, так как напрямую с такой проблемой не сталкивался.

Ответ дан 24.10.2015 - 15:23