ワイルドカードを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 %
}
それが正しいか? $ typeをワイルドカードの値に置き換える必要があります。
次の2つのオプションがあります。
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
になります。 2番目の例では、spin/login
は404を返し、spin/login/foo
のタイプはfoo
になります。
Drupalにどの値を渡すかを伝えているため、ページ引数が不足しています。試してください:
$items['spin/login/%'] = array(
'title' => 'SPIN',
'type' => MENU_CALLBACK,
'access callback' => TRUE,
'page arguments' => array(2),
'page callback' => 'spin_check_access'
);