Formulaire

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,

Quelqu'un connait - il la meilleure methode pour développer un formulaire sous drupal?

Développer en insérant directement du code PHP (CCK,JQUERY,XAJAX,AHAH) dans le champs "corps" d'un node par exemple page est-il une bonne solution?

Aina,

Version de Drupal : 

Hello,

Insérer du code PHP directement dans le corps d'un node est loin d'être une solution idéale :
- pas de vérification de syntaxe
- pas d'autocomplétion
- pas d'accès aux hooks de Drupal (il faut créer son propre module pour ça)

Cela présente néanmoins quelques avantages :
- si tu n'as pas d'accès FTP à ton serveur, ça te permet quand même d'exécuter du code PHP avec un simple accès web
- c'est assez simple à comprendre (surtout pour les débutants), car le code exécuté se trouve dans la page affichée

Pour répondre à ta question, tout dépend ce que tu veux faire avec ton formulaire. Si tu veux envoyer les données saisies vers une adresse e-mail, le module "webform" est une bonne option. En revanche, si tu veux enregistrer les données saisies en base de données, il n'y a pas d'hésitation à avoir : c'est le module "CCK".

oui, je comprends. La ce que j'ai fait est de créer une galerie, j'ai utilisé les modules images CCK, og et og_galerie.

J'ai ajouté des champs CCK dans le contenu image (textbox, checkbox, select box), après je veux ajouter des événements dans ces champs (Javascript et AJAX), je n'arrive pas à hacker le code.

Tu as une idée de ce qu'on peut faire? Je connais pas comment drupal structure son code, ou il met les nodes créés etc ...

Merci pour ta reponse,

Aina

Il ne faut pas "hacker" le code pour faire du JavaScript ou du AJAX.

La bonne pratique - appelée "JavaScript non obtrusif" - consiste à incorporer un fichier JavaScript dans ta page qui s'exécute automatiquement au chargement de la page, en venant se "greffer" sur les bonnes balises HTML.

Il ne faut pas saisir directement du code JavaScript dans la page. Mais ça, ça n'est pas spécifique à Drupal, c'est du pur JavaScript.

PS. Pour incorporer le fichier JavaScript proprement, le mieux est de créer un module qui fait appel à la fonction drupal_add_js.

Merci beaucoup pour ton explication,

Peux tu m'expliquer si possible ou drupal met les pages par exemple les contents créés? Ou bien il les crée à chaque appel?

Par exemple je personnalise un node image, j'ajoute un textfield en CCK.

Je ne vois pas dans le code source ou se trouve cette page .php, je vois que c'est toujours la page index.php qui est toujours appelée à chaque action.

Merci encore,

Aina

Oui, CCK crée une requête par node (et pas une par champ, grâce à l'utilisation d'un cache), mais en cela il n'est pas différent de n'importe quel module qui définit un type de noeud plus complexe qu'un simple champ "body" (modules audio, video, image, organic groups, etc...).

Il faut bien stocker quelque part les infos qui ne rentrent pas dans la table 'node' de base.

Une requête supplémentaire par noeud reste une surcharge tout à fait raisonnable (et inévitable...)

En fait, les pages d'un site Drupal sont "virtuelles", dans le sens où il n'y a pas un fichier qui correspond à chaque page.

Comme tu l'as remarqué, c'est le fichier index.php qui affiche en fait toutes les pages de ton site. Ce fichier utilise l'URL pour déterminer exactement quelle page afficher.

Par exemple, si URL = node/60, Drupal sait qu'il doit afficher le contenu (node) portant l'identifiant 60, si URL = node/60/edit, Drupal sait qu'il doit afficher le formulaire d'édition pour le contenu 60...

Si tu veux interagir avec le code de Drupal, il te faut créer un module et utiliser des hooks, mais c'est trop compliqué à expliquer ici. Cf. Module developer's guide [en]