Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie mehrstufige Formen in Drupal 8

So erstellen Sie mehrstufige Formen in Drupal 8

Christopher Nolan
Christopher NolanOriginal
2025-02-17 09:31:08990Durchsuche

Dieser Artikel zeigt, dass das Erstellen eines mehrstufigen Formulars in Drupal 8 unter Verwendung von zwei separaten Formularen und Drupal-Kerndatenspeicherung erstellt wird. Lassen Sie uns die Erklärung rationalisieren und den Fluss verbessern.

Schlüsselkonzepte:

  • Zwei unabhängige Formen: Die mehrstufige Form wird aus zwei unterschiedlichen Formen konstruiert, wobei jede Untergruppe der Benutzereingabe behandelt wird.
  • abstrakte Basisklasse (MultisePFormbase): gemeinsame Funktionalität wie Abhängigkeitsinjektion, Formulargerüst und Datenverarbeitung ist in einer abstrakten Basisklasse zentralisiert. Dies fördert die Wiederverwendbarkeit und Wartbarkeit von Code.
  • privatetempstore: Drupals PrivateTempStore stellt die Datendauer über mehrere Anfragen hinweg und aktiviert den Multi-Step-Prozess.
  • Routendefinitionen: separate Routen sind für jedes Formular definiert, sodass die Navigation zwischen den Schritten.
  • ermöglicht.

Implementierungsdetails:

Die Lösung umfasst:
  1. MultisePFormbase.php:

    Diese abstrakte Basisklasse übernimmt gemeinsame Aufgaben:
    • PrivateTempStoreFactory Abhängigkeitsinjektion: Injekte SessionManagerInterface, AccountInterface und
    • .
    • Sitzungsmanagement: Stellen Sie sicher, dass eine Sitzung für anonyme Benutzer vorhanden ist.
    • PrivateTempStore Datenspeicher: Verwendet multistep_data, um Formulardaten zu speichern (
    • Schlüssel).
    • saveData() Datensparen (
    • ): Ein Platzhalter für die tatsächliche Datensparenlogik (Implementierung hängt von Ihren spezifischen Anforderungen ab).
    • deleteStore() Datendeletion (
    • ): Entfernt gespeicherte Daten nach erfolgreicher Einreichung.
  2. MultisePoneForm.php:

    Die erste Form:
    • MultistepFormBase erweitert
    • .
    • name enthält zwei Felder: email und
    • .
    • PrivateTempStore ruft zuvor eingegebene Werte von
    • für die Vorpopulation ab.
    • demo.multistep_two leitet nach Einreichung zu
    • weiter.
  3. multiseptWOform.php:

    Die zweite Form:
    • MultistepFormBase erweitert
    • .
    • age enthält zwei Felder: location und
    • .
    • PrivateTempStore ruft zuvor eingegebene Werte aus
    • .
    • ab demo.multistep_one enthält einen "vorherigen" Link, der zu
    • .
    • umleitet saveData() ruft
    • aus der Basisklasse bei der Einreichung auf und leitet sie dann um.
  4. Demo.routing.yml: demo.multistep_one definiert Routen für demo.multistep_two und

    , die sie mit den jeweiligen Formklassen assoziieren.

Illustrative Screenshots:

How to Build Multi-step Forms in Drupal 8

How to Build Multi-step Forms in Drupal 8

Code -Snippets (veranschaulichend):

(multisePFormbase.php - Auszug):

<code class="language-php">protected function saveData() {
  //  Save data (e.g., create a configuration entity)
  $this->deleteStore();
  drupal_set_message($this->t('Form saved!'));
}</code>

(MultisePoneForm.php - Auszug):

<code class="language-php">$form['name'] = [
  '#type' => 'textfield',
  '#title' => $this->t('Your name'),
  '#default_value' => $this->store->get('name') ?: '',
];</code>

Schlussfolgerung:

Dieser Ansatz bietet eine saubere und effiziente Möglichkeit, in Drupal 8 mehrstufige Formulare zu erstellen, wodurch die Leistung des PrivateTempStore für das Querschnittsdatenmanagement verwendet wird. Die Verwendung einer abstrakten Basisklasse fördert die Codeorganisation und die Wiederverwendbarkeit. Diese Struktur kann leicht erweitert werden, um mehr Schritte aufzunehmen. Der FAQ -Abschnitt ist hier für die Kürze weggelassen, da der Artikelgremium bereits die wesentlichen Aspekte abdeckt.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie mehrstufige Formen in Drupal 8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn