質問

モジュールごとに_menu()のすべてのワイルドカードを処理することは可能ですか?

私は特定のワイルドカードについて知っています

display/page/% しかし、それはパスでは機能しません display/page/3/andOrderBy/Name

予測されていないパラメーターを処理したい場合はどうなりますか

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

私はそれを持ちたいです display/* _menu()すべての引数を処理するパス。

どうすればできますか?

役に立ちましたか?

解決

Drupalは、追加のパラメーターとして追加のURL要素を渡します hook_menu コールバック関数 - 使用 func_get_args() コールバックでそれらを取得します。

したがって、ワイルドカードを1つだけ登録する場合 display/page/%, 、しかし、実際のリクエストには2つの追加要素があります display/page/3/andOrderBy/Name, 、コールバックは明示的なパラメーターとして「3」を渡されますが、暗黙の追加のパラメーターとして「andOrderby」および「名前」も渡されます。

コールバックの例:

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 ...
}

他のヒント

ああ;)あなたは正しかった

これが私がそれを解決した方法です。

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);
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top