Drupal 6 абсолютных подстановочных знаков в _menu (), это возможно? - PullRequest
3 голосов
/ 02 октября 2009

возможно ли обрабатывать все подстановочные знаки в _menu () по модулю.

Я знаю о конкретных символах подстановки, таких как

display/page/% но это не сработает для путей display/page/3/andOrderBy/Name

что если я хочу обработать непредсказуемое количество параметров, таких как

display/page/3/12/45_2/candy/yellow/bmw/turbo

Я хочу иметь один display/* _menu () путь для обработки всех аргументов.

как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 02 октября 2009

Drupal будет передавать любые дополнительные элементы URL как дополнительные параметры для вашей функции обратного вызова hook_menu - используйте func_get_args () в вашем обратном вызове, чтобы получить их.

Так, если вы зарегистрируете только один подстановочный знак display/page/%, но фактический запрос имеет два дополнительных элемента display/page/3/andOrderBy/Name, ваш обратный вызов будет передан '3' как явный параметр, а также 'andOrderBy' и 'Name' как неявный дополнительные.

Пример обратного вызова:

function yourModuleName_display_callback($page_number) {
  // Grab additional arguments
  $additional_args = func_get_args();
  // Remove first one, as we already got it explicitely as $page_number
  array_shift($additional_args);
  // Check for additional args
  if (!empty($additional_args)) {
    // Do something with the other arguments ...
  }
  // other stuff ...
}
0 голосов
/ 02 октября 2009

ах;) ты был прав

вот как я это решил.

function mysearch_menu() {
$items['mysearch/%'] = array(
'page callback' => 'FN_search',
'access callback' => TRUE,
);
return $items;
}


function FN_search()
{
    return print_r(func_get_args(),true);
};
...