Аргумент подстановочной страницы в hook_menu() не работает

Я пытаюсь создать пункт меню типа разбиения на страницы, который позволит пользователю видеть более старый/новый контент. Подстановочный знак представляет собой множитель, который задает диапазон, из которого отбирается контент. Это массив, созданный в моей реализации hook_menu():

$items['cars/%'] = array(
    'title' => 'cars',
    'page callback' => 'cars_car_view',
    'page arguments' => 'page',
    'access callback' => TRUE,
);

и это моя функция обратного вызова страницы:

function cars_car_view($page) {
    print $page;

    // Code
}

Но когда я печатаю переменную $page, печатаются только «автомобили», а не число. Я прочитал документацию по hook_menu, но не могу понять, что я делаю неправильно или что я должен делать вместо этого. Любая помощь?


person Brian Crawford    schedule 16.02.2015    source источник


Ответы (2)


Вы должны использовать массив в аргументах страницы. array(0) относится к автомобилям array(1) относится к подстановочным знакам

$items['cars/%'] = array(
    'title' => 'cars',
    'page callback' => 'cars_car_view',
    'page arguments' => array(1),
    'access callback' => TRUE,
);
person Balaji    schedule 16.02.2015
comment
Я использовал array() в аргументах страницы, но он тоже не работал. В конце концов я понял, что проблема заключалась в том, что я использовал ту же функцию обратного вызова страницы, что и другая страница, которая не принимала аргументы. Один из них должен был быть целевой страницей (по сути, эквивалентной cars/0). Исправил это, создав две одинаковые функции, но одна принимает аргументы, а другая нет. Хотелось бы более элегантное решение, если оно существует. - person Brian Crawford; 16.02.2015

Если вы хотите получить аргумент из URL-адреса, вы можете использовать функцию arg() или drupal_get_query_parameters().

person AjayNimbolkar    schedule 16.02.2015