Drupal 7 функция AJAX ответчик - PullRequest
       14

Drupal 7 функция AJAX ответчик

0 голосов
/ 29 февраля 2012

Я строю комплексное решение на основе AJAX как модуль для сайта Drupal 7. Я решил не писать отдельный PHP-скрипт для ответа на мой jjERY ajax-вызов, а реализовал код в моем модуле drupal.

Моя проблема заключается в установлении соединения между jQUERY и DRUPAL, т. Е. Функцией, которая отвечает на мое CLICK EVENT.

Я использовал следующий код:

function staff_filter_menu(){
    $items = array();
    $items['staff/filtering/results/%'] = array(
        'page callback' => 'staff_filter_function',
        'access callback' => TRUE,
        'type' => MENU_CALLBACK,
        'delivery callback' => 'staff_filter_deliver',
    );
    $items['staff/filtering/saveclipboard'] = array(
        'page callback' => 'staff_filter_savetoDB',
        'access callback' => TRUE,
        'type' => MENU_CALLBACK,
        'delivery callback' => 'staff_filter_deliver',
    );
    drupal_flush_all_caches();
    return $items;
}

Но он перестал работать, когда я остановился, удалил и перезапустил модуль. Кажется, это не надежная стратегия.

Ответы [ 2 ]

1 голос
/ 11 июля 2012

Вы все еще создаете цикл, в котором вызываются ваши пункты меню, а затем очищаются кешем.Во всяком случае, он должен быть вызван первым, хотя есть другая проблема, если вам требуется это в hook_menu () вашего модуля.

Вы должны удалить это и убедиться, что ваша форма вызывает и возвращает данные, используя фиксированные данные.

1 голос
/ 29 февраля 2012

drupal_flush_all_caches() делает это:

Очищает таблицы кеша, перестраивает кэш меню и реестры тем, а также вызывает перехват, чтобы также можно было очистить данные кеша других модулей.

Когда меню перестраивается, вызывается hook_menu() ... в основном вы создаете бесконечный цикл, помещая drupal_flush_all_caches() туда, где он у вас есть.

...