[Résolu] comment agencer un 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.

Question: comment agencer un formulaire :)

Bon je voudrais agencer mon formulaire comme j'en ai envie car pour le moment il les agences l'un en desous de l'autre.

Le formulaire est fait via un $form=array(); dans un module, j'aimerai éviter d'installer (encore) un module dans drupal.

Quelqu un peut il m'aider ?
Ou quelqu'un connait une bonne doc?

J'ai regarder du coté des template mais je suis un peu perdu de ce coté là.

Merci

Forum : 

Bonjour/Bonsoir,

Si tu parle de mise en forme, c'est effectivement avec un template. Puisqu'il faut le plus possible respecter une architecture 3-tiers, tu doit donc séparer l'affichage de la gestion de données.

Cordialement Thewiu.

Aurais tu une doc à me conseiller ?

J'avoue être un peu perdu, les explications sur les tutos ne sont pas claire et j'ai l impression que c est comme ça avec la majorité des tutos en drupal. :)

Bonjour,

Tout dépend si tu utilise la création de formulaire de Drupal ou si tu le fait manuellement ( personnellement je le fait manuellement car je gère du contenu dynamique ). Après pour des tutos sur l'utilisation des templates, tu peux "courir", j'ai rechercher longtemps, puis j'ai essayer des trucs et finalement j'ai obtenu en rendu satisfaisant, autant pour le code que visuellement.
Si jamais, je pourrai te donner un exemple de formulaire gérer avec un tamplate et les hooks qui vont avec.

Cordialement Thewiu.

Bonjour/Bonsoir,

Actuellement j'utilise ceci :

fichier mon_module.module :

<?php
/<em>
 * Implements
hook_menu()
 */
function
mon_module_menu() {
 
$items = array();

  $items["url-page"] = array(
   
'title' => 'Nom de la page',
   
'page callback' => 'mon_module_rederable_page',
   
'access callback' => TRUE,
  );
  return
$items;
}
/</
em>
 * Implements
hook_theme()
 <
em>/
function
mon_module_theme($existing, $type, $theme, $path) {
  return array(
   
'mon_module_template' => array(
     
'variables' => array('liste_variable' => NULL, 'variable_test' => NULL),
     
'template' => 'mon_module_template',
    ),
  );
}
/</
em>
 * Implements
renderable_page()
 */
function
mon_module_rederable_page() {
 
$liste_variable['test'] = "test";
 
$variable_test = "ceci est un test";

  $output = array(
   
'#theme' => 'mon_module_template',
   
'#type' => 'markup',
   
'#liste_variable' => $liste_variable,
   
'#variable_test' => $variable_test,
  );
  return
$output;
}
?>

Et dans ton fichier mon_module_template.tpl.php :

<?php print $variable_test; ?>
<?php print $liste_variable['test']; ?>

Si tu à besoin de plus d'information n'hésite pas.

Cordialement Thewiu.

PS : Mon adresse pro si besoin pigneret.william@hotmail.fr.

Bonjour/Bonsoir,

Tu as 2 choix, soit avec des formulaires ( $_POST ) soit via l'adresse ( http://www.home/client/123 ).

Pour les formulaires, cela fonctionnent comme du php normal, tu indique quelle page est renvoyer et tu les récupères dans ton module, par exemple :

<?php
function mon_module_menu() {
 
$itmes = array();

 
$items['ma_page'] = array(
   
'title' => 'Ma page de test',
   
'page callback' => 'mon_module_rederable_page',
  );

  return
$items;
}

function
mon_module_rederable_page() {
 
$nom = $_POST['nom'];
}
?>

Et dans le template :

<?php
<form name="mon_form" method="POST" action="?q=ma_page">
  <
input type="text" name="nom">
  <
input type="submit" value="envoyer">
</
form>
?>

Avec l'URL cela ce gère avec le hook menu, tu fait prendre ( ou non ) à ta fonction des arguments, exemple :

<?php
function mon_module_menu() {
 
$items = array();

 
$items['ma_page/%'] = array(
   
'title' => 'Ma page',
   
'page callback' => 'mon_module_rederable_page',
   
'page arguments' => array(1), // définit la valeur de base du premier argument
 
);
  return
$items;
}

function
mon_module_rederable_page() { // ou ($arg1, $arg2)
  //si tu utilise un wildcard (%) tu à accès au argument avec la fonction arg() et entre parenthèse la place de l'argument, 1 prendera le premier après le /, 2 prendra ma_page/1/2 <=, etc ...
 //si tu a définit les arguments tu les mets dans la parenthèse de la fonction et tu les utilises normalement
}
?>

Cordialement Thewiu.