[résolu] Impossible de faire fonctionner un simple hook_menu

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je commence à programmer des modules pour Drupal, malheureusement j'ai beau m'être servi de tous les tutoriels et aides trouvés sur le net mon hook_menu ne veut pas marcher!

Voici le fichier DSAmodule.module, en rentrant directement dans l'url le /summary ou bien le /admin/config/system/dsamodule il me marque page non trouvée (url complète du style
http://users/users/nom/www/DrupalVierge/DSAmodule. J'ai installé le module sur un drupal vierge pour être sûr de ne pas interféré avec d'autres configs du site, et j'ai effectué une dizaine de fois le vidage du cache / desactivation+réactivation du module en vain.

Si vous pouviez m'éclairer sur ce qui ne va pas je vous serais grandement reconnaissant !

<?php
function DSAmodule_menu(){
  
$items['summary'] = array(
      
'title' => t('Vue de la BDD'),
     
'page callback' => 'DSAmodule_content',
    
'access arguments' => array(true),
       
'type' => MENU_CALLBACK,
  );
 
  
$items['admin/config/system/dsamodule'] = array(
    
'title' => t('Configuration du DSAmodule'),
    
'description' => t('Choisissez les rubriques à afficher'),
     
'page callback' => 'drupal_get_form',
      
'page arguments' => array('DSAmodule_admin_settings'),
     
'access arguments' => array('administer site configuration'),
      
'type' => MENU_NORMAL_ITEM,
   );
 return
$items;
}

function
DSAmodule_content(){
   
   return
"Coucou";
}


function
DSAmodule_admin_settings(){
   
$form['DSAmodule_display'] = array(
     
'#type' => 'checkbox',
     
'#title' => t('Rubriques à cocher'),
       
'#description' => t('Check the sections to show in the exemple page'),      
   );
 return
$form;
}
?>

NB : Concernant la page d'administration le lien 'Configuration ...' ne s'affiche pas dans la partie système comme prévu, et sur la page contenant la liste des modules le bouton configurer s'affiche bien mais il renvoi à l'url "http://users/users/nom/www/DrupalVierge/DSAmodule#overlay=admin/config/s..."

Forum : 
Version de Drupal : 

Qu'entends-tu par flusher les caches? J'ai vidé le cache de drupal avec admin_menu ou encore devel, après je n'ai pas vidé celui du navigateur, du DNS,etc. Sur google j'ai trouvé une commande à taper sous windows pour flusher le dns, c'est ça que tu me recommandes?

ipconfig /flushdns

Mais tu n'as pas remarqué que j'ai un 'page arguments' pour donner un paramètre à mon drupal_get_form ?!
De plus pour le cache je t'ai déjà dit deux fois que je l'avais déjà vidé avec admin_menu...

Enfin bref pb résolu, ce n'est pas grâce au forum mais si ça peut aider des personnes par la suite, ne mettez jamais de texte en français pour les titres ou descriptions, ce sont les accents qui ont tout fait buggé !!

La première chose à faire est de regarder dans ta table menu_router pour vérifier que tu as bien une ligne pour chacun de tes items de menu (select * from menu_router where path='admin/config/system/dsamodule')

Si tu as bien cette ligne, tente de placer ton module dans l'endroit prévu à cet effet. C'est à dire dans un dossier "site/all/modules/mes_modules/mon_module". Il se peut que Drupal n'apprécie en effet pas que tu places tes modules à la racine.

Ensuite tu peux aussi utiliser un nommage standard. Je ne suis pas persuadé que cela ait un implact, mais il me semble avoir eu une fois un problème de ce genre. Drupal s'attend à trouver des modules dont le nom est en minuscules. Essayer donc plutôt "dsa_module" (avec le renommage des fonctions correspondant évidemment).

Une fois que tu as fais ton ménage, tu vidanges tes caches et tu refais ta requêtes sur menu_router de sorte à vérifier que tout est correctement enregistré.

Je n'avais pas vu que tu avais résolu ton problème. Pense à mettre "résolu" dans le titre de ton topic !!

Sinon tu dois avoir un problème général sur ton installation PHP car j'utilise régulièrement des accents dans les titres/description et cela n'a jamais posé le moindre problème.

Ceci étant dit, la bonne pratique est de mettre tes chaînes en anglais, sans la fonction t() car les entrées de menus sont automatiquement traduites. Ensuite pour avoir tes entrées en français, tu dois passer par la traduction de l'interface ou mieux, utiliser un fichier .po pour ton module.