Гибкость аргументов меню Drupal - PullRequest
0 голосов
/ 01 марта 2012

Я использую hook_menu для установки ссылки, которую я вызываю через JQUERY из приложения AJAX. Моя реализация ловушки выглядит следующим образом:

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

}

Эта ссылка является точкой контакта для моего приложения ajax, которое представляет собой простое текстовое поле, в котором пользователи вводят некоторые данные. * staff_filter_function * выполняет поиск в базе данных и возвращает некоторые подходящие данные. Код Ajax выглядит следующим образом:

$.ajax({
url: Drupal.settings.CALL_BACK + '/' + $(this).val(),
success: function($data){
       .... more stuff done here
    }
});

Все работает отлично, но для одной маленькой детали. Я хочу разрешить ярлык, который позволит отображать все результаты. Этот ярлык просто набирает один пробел. Но поскольку hook_menu ожидает аргумент в конце URL-адреса, мой ajax-запрос завершается неудачно, когда я набираю пробел. Он отлично работает, когда я набираю реальный контент.

Это просто для полноты, и приятно иметь возможность ... если кто-то может поделиться некоторыми идеями, я буду очень признателен.

1 Ответ

1 голос
/ 11 марта 2012

Может быть, вам не нужно добавлять аргумент в конце URL.Просто измените ваш код следующим образом:

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',
);
return $items;

и внесите небольшое изменение в функцию обратного вызова вашей страницы

function staff_filter_function($my_arg = "")
{
// your code goes here
}

, и вы можете рассматривать $ my_arg как аргумент страницы.

Надеюсь, это работает, Мухаммед

...