2010-08-12 4 views
3

Je suis un certain nombre d'Initialisation articles par hook_menu (Drupal 6)hook_menu() - un comportement inattendu (question de chemin plus long)

... 
$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; 

La première entrée est une entrée parent et fonctionne très bien. Les deux suivants sont des entrées enfants. Ces deux dernières entrées de menu restent invalides et redirige vers la page parent. Je l'ai corrigé avec une petite modification en éliminant la première marque générique '% /' des définitions de chemin.

Moyens:

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

à

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

et

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

à

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

S'il vous plaît aidez-moi ce que je fais mal en ajoutant une wild card? Est-ce que plus de deux jokers sont invalides?

Répondre

5

Il n'est pas mentionné suffisamment dans la documentation, mais il y a une limite sur le nombre de chemin éléments que vous pouvez utiliser pour un Drupal m rappel enu - voir the MENU_MAX_PARTS constant.

Pour Drupal 6, cette limite est de sept, ce qui dépasse vos deuxième et troisième chemins. Vos deux correctifs ramènent le nombre d'éléments à sept, ce qui explique pourquoi ceux-ci fonctionnent.

+0

Bonne prise! Malheureusement, il n'y a pas de référence à cette limitation dans la page de documentation pour 'hook_menu()', qui je pense est le premier endroit où l'on devrait vérifier certains détails sur la façon d'implémenter les rappels de menu. – kiamlaluno

+0

Merci mon pote, une nouvelle chose pour moi. Et il a été étendu à 9 dans Drupal 7. –

0

J'ai corrigé le problème sans exclure le premier caractère générique comme je l'ai mentionné. Mais je n'ai trouvé aucune raison logique.

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

à

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

et

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

à

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