Submitted by Milola on
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..."
as tu flusher les caches ?
Permalien Soumis par ced_sdml le 21 Juin, 2012 - 11:37
as tu flusher les caches ? sinon non prise en compte des nouveaux menu.
il te manque aussi un drupal_get_form($form) pour l'affichage de ton formulaire
++
Qu’entends-tu par flusher les
Permalien Soumis par Milola le 21 Juin, 2012 - 11:45
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
via admin_menu pour les
Permalien Soumis par ced_sdml le 21 Juin, 2012 - 14:04
via admin_menu pour les caches
essaye déjà le drupal_get_form pour le $form
++
Mais tu n’as pas remarqué que
Permalien Soumis par Milola le 21 Juin, 2012 - 14:45
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
Permalien Soumis par Yoran le 25 Juin, 2012 - 09:12
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
Permalien Soumis par Yoran le 25 Juin, 2012 - 09:14
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.
D’accord merci Yoran j’irais
Permalien Soumis par Milola le 25 Juin, 2012 - 09:46
D'accord merci Yoran j'irais faire des petits tests si j'ai le temps je trouve aussi cela bizarre que ça vienne des caractères, mais tout porte à croire que ça vient de là.
Titre du sujet édité!