Personalisation de formulaires

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.

Hello,
Je développe actuellement mon premier site sous Drupal, et j'en suis très satisfait.
J'ai toutefois quelques questions portant sur lacustomisation de formulaires:

-Par défaut, une partie du formulaire est "pliée", il faut cliquer dessus pour afficher le contenu. J'aimerais que cette partie du formulaire soit affichée par défaut. Comment faire?

-De la même manière, j'ai - toujours sur ce fameux formulaire - un champ pour uploader une image. J'aimerais rendre l'upload d'image obligatoire. Comment procéder?

Merci d'avance pour vos réponses :)

Version de Drupal : 

Salut,

tu es visiblement en 5.x si je me fies au tag, je te conseilles de jeter un oeil sur cette page : http://api.drupal.org/?q=api/file/developer/topics/forms_api_reference.h...

Pour te répondre :
1. Ton élément "plié" est très certainement un fieldset.
Il te suffit de lui ajouter l'attribut '#collapsed' positionné sur FALSE.

  1. Pour rendre un champ obligatoire, '#required' positionné sur TRUE.

Si tu ne sais pas du tout comment modifié un formulaire, je te conseilles la lecture de la fAPI : http://drupal.org/node/37775.

Dans ton cas, tu utiliseras le hook_form_alter :
http://api.drupal.org/api/function/hook_form_alter/5.

Mais si tu n'as pas de grosse modifs à faire sur la structure du formulaire en elle-même, je te conseillerai de faire simplement une fonction de thème dans template.php :

<?php
// En considérant que le $form_id soit "my_node_form"
function phptemplate_my_node_form($form) {
 
$form['machin']['#chose'] = 'truc'

  ...

  return
drupal_render($form);
}
?>

A+

Débutant sur Drupal mais tu as les bons réflexes :

  • tes questions sont claires
  • tu n'attends pas sans chercher de ton côté
  • tu postes la solution

Si tous les noobs étaient comme toi, on aurait une communauté fr beaucoup plus efficace ;)