3

hook_menu (Drupal 6) を介して多数の項目を初期化しています

...
$items['webtv/block/%/playlist/edit/%'] = array(
  ...
  'page arguments' => array('webtv_playlist_form', 2, 5),
  ...
); 

$items['webtv/block/%/playlist/edit/%/filter/new'] = array(
  ...
  'page arguments' => array('webtv_playlist_param_form', 2, 5),
  ...
);

$items['webtv/block/%/playlist/edit/%/filter/%'] = array(
  ...
  'page arguments' => array('webtv_playlist_param_form', 2, 5, 7),
  ...
);

return $items;

最初のエントリは親エントリであり、正常に動作します。次の 2 つは子エントリです。これらの最後の 2 つのメニュー エントリは無効のままで、親ページ ビューにリダイレクトされます。パス定義から最初のワイルドカード「%/」マークを削除することで、小さな変更を加えて修正しました。

意味:

$items['webtv/block/%/playlist/edit/%/filter/%']

$items['webtv/block/playlist/edit/%/filter/%']

$items['webtv/block/%/playlist/edit/%/filter/new']

$items['webtv/block/playlist/edit/%/filter/new']

ワイルドカードを追加して、私が間違っていることを教えてください。2 つ以上のワイルドカードは無効ですか?

4

2 に答える 2

5

ドキュメントでは十分に言及されていませんが、Drupal メニュー コールバックに使用できるパス要素の数には制限があります - MENU_MAX_PARTS 定数を参照してください。

Drupal 6 の場合、この制限は 7 で、2 番目と 3 番目のパスはこれを超えています。両方の修正により、要素数が 7 に減りました。これが、それらが機能する理由です。

于 2010-08-12T17:03:57.147 に答える
0

私が言及したように、最初のワイルドカードを除外せずに問題を修正しました。しかし、論理的な理由は見つかりませんでした。

$items['webtv/block/%/playlist/edit/%/filter/%']

$items['webtv/block/%/playlist/edit/%/%']

$items['webtv/block/%/playlist/edit/%/filter/new']

$items['webtv/block/%/playlist/edit/%/new']
于 2010-08-12T10:16:52.213 に答える