Drupal неопределенная функция статический HTML с постом в PHP - PullRequest
1 голос
/ 25 августа 2011

Я поместил свой собственный файл php в / sites / all / modules / и вызвал его через $.post(<myphppage>) со статической html-страницы (функция javascript), также в / sites / all / modules / .

Однако php не выполняется должным образом, но вызывается (журналы доступа в Apache HTTPD показывают, что он опубликован).

Если я пытаюсь вручную запросить ту же страницу php, я получаю эту ошибку:

Неустранимая ошибка: вызов неопределенной функции db_insert () в / full / path / to / sites / modules / / в строке x.

Оператор echo, который у меня есть на странице php, правильно выводится над этой ошибкой и просто использует $_GET['paramname']. (И _POST, изменено для тестирования прямого запроса), чтобы вывести несколько параметров строки запроса для отладки).

Кроме того, когда я добавил вызов к watchdog, я получаю:

Неустранимая ошибка: вызов неопределенной функции watchdog () в / full / path / to / sites / modules / / в строке x.

Разве невозможно получить прямой доступ к странице PHP? Или мне нужна библиотека Drupal для импорта? Или я просто что-то упускаю из-за того, как работает Drupal?

1 Ответ

1 голос
/ 25 августа 2011

Вы получаете эти ошибки о неопределенных функциях, потому что ваш PHP-файл независим от Drupal и не загружает его.

Drupal способ сделать то, что вы пытаетесь сделать, - это создать модуль (см. Создание модулей Drupal 7.x и Создание модулей Drupal 6.x ), определяющих URL-адрес, который обрабатывается с помощью hook_menu () ;этот URL затем используется с $.post().

. В качестве примера способа начальной загрузки Drupal см. содержимое файла index.php , который поставляется с каждой установкой Drupal.(Следующий код используется в Drupal 7.)

/**
 * Root directory of Drupal installation.
 */
define('DRUPAL_ROOT', getcwd());

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

Код меняется с Drupal 6 на Drupal 7, но drupal_bootstrap () определен в обеих версиях Drupal.

В любом случае, правильный способ - создать модуль.Список причин, по которым модуль должен использовать файл PHP, который загружает Drupal, см. . Есть ли случаи, когда стороннему модулю потребуется использовать свой собственный файл, подобный xmlrp.php, cron.php или authenticate.PHP?

...