Гибкость аргументов меню Drupal
Я использую 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 ответ
Может быть, вам не нужно добавлять аргумент в конце 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 как аргумент вашей страницы.
Надеюсь, это работает, Мухаммед