проблема с подстановочным знаком меню крючка()


Я не могу получить подстановочный знак из hook_menu, чтобы передать его функции обратного вызова

Вот что у меня есть:

function spin_menu() {
    $items = array();

    $items['spin/login/%'] = array(
        'title' => 'SPIN',
        'type' => MENU_CALLBACK,
        'access callback' => TRUE,
        'page callback' => 'spin_check_access'
    );

    return $items;
}

function spin_check_access($type = '') {
    echo $type; // type is never the %
}

Правильно ли это? Мне нужно, чтобы тип $ был заменен значением подстановочного знака.

Author: chchrist, 2012-01-12

2 answers

У вас есть два варианта:

function spin_menu() {
  $items = array();

  $items['spin/login'] = array(
    'title' => 'SPIN',
    'type' => MENU_CALLBACK,
    'access callback' => TRUE,
    'page callback' => 'spin_check_access',
  );

  $items['spin/login/%'] = array(
    'title' => 'SPIN',
    'type' => MENU_CALLBACK,
    'access callback' => TRUE,
    'page callback' => 'spin_check_access',
    'page arguments' => array(2),
  );

  return $items;
}

Меню подключения не будет отправлять в функцию обратного вызова никакие параметры с подстановочными знаками, но оно будет отправлять параметры, не определенные в URL-адресе. Таким образом, в первом примере, если вы перейдете к spin/login, тип будет '', а тип spin/login/foo будет foo. Для второго примера spin/login вернет 404, а для spin/login/foo тип будет foo.

 2
Author: googletorp, 2012-01-12 11:09:43

Вам не хватает аргументов страницы, указывающих Drupal, какие значения передавать. Попробуйте:

$items['spin/login/%'] = array(
    'title' => 'SPIN',
    'type' => MENU_CALLBACK,
    'access callback' => TRUE,
    'page arguments' => array(2),
    'page callback' => 'spin_check_access'
);
 1
Author: Letharion, 2012-01-12 11:08:18