Drupal vereinfacht die Bildung von Form, indem es mit dem zugrunde liegenden HTML umgehen. Sie definieren die Felder und Drupal erzeugt die Form. Während einfache Formen unkompliziert sind, können komplexe Formen mit zahlreichen Feldern Benutzer überwältigen. In diesem Artikel wird beschrieben, dass mehrseitige Formulare in Drupal erstellt werden, um die Benutzererfahrung zu verbessern.
$form_state
Erstellen Sie das Modul: Erstellen Sie ein Verzeichnis und fügen Sie die folgenden Dateien hinzu: sites/all/modules/multipageform
: multipageform.info
<code>name = multipageform description = Creates a multi-page form. core = 7.x</code>
: multipageform.module
<?php /** * @file * Main module file. */ /** * Implements hook_help(). */ function multipageform_help($path, $arg) { if ($path == 'admin/help#multipageform') { $output = '<h3>' . t('About') . '</h3>'; $output .= '<p>' . t('The multipageform module demonstrates creating a multi-page form.') . '</p>'; return $output; } }
Aktivieren Sie das Modul: Das -Modul in Ihrer Drupal -Administration aktivieren. multipageform
Menüelement: Fügen Sie ein Menüelement hinzu, um mit : hook_menu
auf das Formular zugreifen zu können
/** * Implements hook_menu(). */ function multipageform_menu() { $items['multipageform/form1'] = array( 'type' => MENU_CALLBACK, 'access arguments' => array('access content'), 'page callback' => 'drupal_get_form', 'page arguments' => array('multipageform_form1') ); return $items; }
Formulardefinition: Definieren Sie die mehrseitige Form mit und einer Helferfunktion multipageform_form1
: getForm
function multipageform_form1($form, &$form_state) { if (isset($form_state['values'])) { $currstep = $form_state['step'] + 1; } else { $currstep = 0; } $form_state['step'] = $currstep; $allsteps = getForm(); $currform = $allsteps[$currstep]; return $currform; } function getForm() { $form = array(); // Step 1 $step1['name'] = array( '#type' => 'textfield', '#title' => t('Enter your name'), '#description' => t('Your first name') ); $step1['last_name'] = array( '#type' => 'textfield', '#title' => t('Enter your last name'), '#description' => t('Your last name') ); $step1['submit'] = array( '#type' => 'submit', '#value' => t('Next') ); $form[] = $step1; // Step 2 (and so on...) Add more steps as needed. // ... return $form; }
übernimmt die Einreichung von Formular und Zustand Persistenz: multipageform_form1_submit
function multipageform_form1_submit($form, &$form_state) { $form_state['storedvalues'][$form_state['step']] = $form_state['values']; if ($form_state['step'] + 1 != getNumberOfSteps()) { $form_state['rebuild'] = TRUE; } else { // Process final form values (e.g., save to database) $finalformvalues = array(); $currStep = 0; foreach (getForm() as $step) { foreach ($step as $key => $value) { if (strcmp($key, "submit") != 0) { $finalformvalues[$key] = $form_state['storedvalues'][$currStep][$key]; } } $currStep++; } // Store $finalformvalues } } function getNumberOfSteps() { return count(getForm()); }
: multipageform_form1_validate
hinzufügen
function multipageform_form1_validate($form, $form_state) { switch ($form_state['step']) { case 0: if (empty($form_state['values']['name'])) { form_set_error('name', t('Name cannot be empty')); } // ... other validations break; // ... other steps } }
Das obige ist der detaillierte Inhalt vonAufbau einer mehrseitigen Assistentenform in Drupal. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!