Module

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 à vous et merci d'avance pour votre aide. Voici ma situation, j'apprends à créer des modules, je prends des exemples sur internet simples pour afficher "helloworld", voici le code dans mon fichier .module:
/**

  • Implementation of hook_menu().
    */
    function helloworld_menu() {
    $items = array();

$items['helloworld/sayhelloworld'] = array(
'title' => 'Hello World Test',
'page callback' => 'say_hello_world',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);

return $items;
}
function say_hello_world() {
$vars = 'Hello World!';

return $vars;
}

Je vide les caches et quand je vais sur le lien helloworld/sayhelloworld, un message d'erreur AJAX s'affiche et je ne comprends pas pourquoi, je n'ai aucune idée de l'origine de l'erreur, voici le message :

erreur HTTP AJAX s'est produite.
Code de statut HTTP : 200
Informations de débogage ci-dessous.
Chemin : /drupalsite/edit/metadata
StatusText: OK
ResponseText : /**

  • Implementation of hook_menu().
    */

MERCI ENCORE.

Forum : 
Version de Drupal : 

MENU_CALLBACK crée un appel ajax et ta fonction say_hello_world() retourne un string ça ne peut pas fonctionner.

Soit tu ne fais pas d'ajax et tu changes MENU_CALLBACK par MENU_LOCAL_TASK

Soit tu fais de l'ajax, tu laisses MENU_CALLBACK et tu changes ta fonction :

function say_hello_world() {

$a_command = array();

$a_command[] = ajax_command_html( '#un-id-qui-se-trouve-dans-ton-code-html', 'hello world");

  ajax_deliver( array(
    '#type' => 'ajax',
    '#commands' => $a_command
  ));
}

Bonjour Phil2ipe, merci pour ta réponse rapide!
Je connais pas l'AJAX, j'ai pris ce code d'un tuto : http://akabia.fr/drupal-7-d%C3%A9veloppement-de-modules , j'essaie d'apprendre à faire un module, son utilité, comment l'utiliser et comment le faire apparaître.
J'ai changé ce que tu m'as dit, je n'ai plus l'erreur AJAX mais le code de mon module s'affiche toujours en haut de page :s et pourtant je suis à la lettre le tuto, si tu connais un bon site avec un bon tuto, fais m'en part s'il te plait.

On s'est tous fait avoir sur ce coup là,

contrairement à ce que tu pourrais penser, ce n'est pas parce que un fichier s'appelle machin.php qu'il va s'exécuter : en http, tout est par définition du html, c'est-à-dire du texte balisé, qui va s'afficher tel quel, après traitement des balises;

Il faut donc que ton module commence par la balise <?php pour que ce suit soit interprété comme du code php !

Un jour tu vas voir des templates (machin.tpl.php), où le html normal et le code php se mélagent plus ou moins harmonieusement...

Sur les modules Drupal, le standard de programmation veut qu'on ne ferme pas la balise php en fin de fichier. Le laisser peut poser des erreurs d'en-tête, c'est probablement ce qui se passe ici et qui te donne cette page blanche.

Non plus, j'ai regardé avant ta réponse dans les modules tout faits, il y avait que <?php, j'ai donc enlevé le ?> mais j'ai toujours un page blanche, le code m'a l'air juste pourtant, j'ai suivis les conseil de Phili2pe, le code s'affiche en haut de ma page même si je n'ai plus l'erreur AJAX..