#nwxtech6 Mickaël Deffontaine - Drupal API Form

598 vues

Publié le

Il est possible, grâce à l'API du CMS Drupal, de développer un formulaire en moins de 50 lignes de code. Cas client : du formulaire de contact simple au formulaire de réponse à une offre d'emploi avec attachement de fichiers dans le mail.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
598
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

#nwxtech6 Mickaël Deffontaine - Drupal API Form

  1. 1. Drupal Form API #NWX Tech 6
  2. 2. QUI SUIS-JE ? • Développeur / Intégrateur Drupal • www.laborouge.com • twitter.com/laborouge 2
  3. 3. LE FORMULAIRE • 1ère interactivité • Besoin récurrent 3
  4. 4. DRUPAL API FORM • Utilisation de tableau • Drupal se charge du reste • Compatibilité des thèmes • Compatibilité des modules • PHP, AJAX & JavaScript • Sécurité, fiabilité et accessibilité • Site Multilingue 4
  5. 5. GÉNÉRATION DU FORMULAIRE drupal_get_form() hook_form() hook_form_validate() hook_form_submit() 5
  6. 6. API EN DÉTAILS api.drupal.org/api/drupal/developer!topics!for ms_api_reference.html/7 6
  7. 7. UNE API RICHE api.drupal.org/api/drupal/developer!topics!for ms_api_reference.html/7 7
  8. 8. FORM ELEMENTS • Textfield / Textarea • Password • Select / Radios / Checkboxes • Date • Managed file • Hidden • Fieldset • Submit 8
  9. 9. PRINCIPALES PROPRIÉTÉS • #type • #title • #description • #options • #default_value • #size • #maxlength • #attributes • #required • #weight • #prefix • #suffix 9
  10. 10. HOOK_FORM() • Construction du formulaire • $form[] • hook_form_alter 10 function hook_form() { }
  11. 11. EXEMPLE - TEXTFIELD $form['mail'] = array( '#type' => 'textfield', '#title' => t('Mail'), '#size' => 60, '#maxlength' => 128, '#required' => TRUE, ); 11
  12. 12. EXEMPLE - SELECT $form['job'] = array( '#type' => 'select', '#title' => t('Job'), '#options' => array( 'Developper' => t('Developper'), 'Web Designer' => t('Web Designer '), ), '#default_value' => t('Select a job...'), '#prefix' => '<div class="apiform clearfix">' '#suffix' => '</div>', ); 12
  13. 13. EXEMPLE - SUBMIT $form['submit'] = array( '#type' => 'submit', '#value' => t('Send'), '#attributes' => array( 'title' => t('Send'), ), ); 13
  14. 14. FINALISATION DU FORMULAIRE $form['#validate'][] = 'hook_validate'; return $form; 14
  15. 15. HOOK_VALIDATE() • Validation du contenu saisi 15 function hook_validate(&$form, &$form_state) { }
  16. 16. EXEMPLE – FORM_SET_ERROR If(!valid_email_address($form_state['values']['mail'])) { form_set_error('mail', t('Your email is not valid !!!')); } 16
  17. 17. EXEMPLE – FORM_SET_VALUE If(empty ($form_state['values']['job'])) { form_set_value($form['job'], t('Empty field'), $form_state); } 17
  18. 18. HOOK_FORM_SUBMIT() • Soumission des données 18 function hook_submit($form, &$form_state) { }
  19. 19. EXEMPLE variable_set('mail', $form_state['values']['mail']); variable_set('job', $form_state['values']['job']); drupal_set_message(t('Congratulation !!!')); drupal_mail('monformulaire', 'envoie_admin', $form_state['values'], TRUE); 19
  20. 20. HOOK_MAIL() • Génération d’un mail 20 function hook_mail(&$key, &$message) { }
  21. 21. RÉCUPÉRATION DES DONNÉES $mail = variable_get('mail', 'Mail'); $job = variable_get('job', 'Job'); 21
  22. 22. GÉNÉRATION DU MAIL switch ($key) { case 'envoie_admin': $message['to'] = 'monmail@mail.com'; $message['subject'] = t('Formulaire rempli'); $message['body'][1] = t('E-mail : ') . $mail; $message['body'][2] = t('Job : ') . $job; break; } 22
  23. 23. CAS CLIENT • Formulaire de contact • Réponse à une offre d’emploi • Front-office & Back-office 23
  24. 24. INTEROPÉRABILITÉ • Mime Mail • CAPTCHA • Token • Tous les modules Drupal 24
  25. 25. LES ALTERNATIVES • Webform : drupal.org/project/webform 25
  26. 26. CONTACT • www.laborouge.com • twitter.com/laborouge • mickael.deffontaine@gmail.com 26
  27. 27. QUESTIONS ? 27

×