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

#nwxtech6 Mickaël Deffontaine - Drupal API Form

658 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
658
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

×