Cet article montre la création d'une forme en plusieurs étapes dans Drupal 8 en utilisant deux formes distinctes et le stockage de données temporaire de base de Drupal. Ramovions l'explication et améliorons le flux.
Concepts clés:
PrivateTempStore
assure la persistance des données sur plusieurs demandes, permettant le processus en plusieurs étapes. Détails de l'implémentation:
La solution implique:
MultiStepformBase.php: Cette classe de base abstraite gère les tâches communes:
PrivateTempStoreFactory
, SessionManagerInterface
, et AccountInterface
. PrivateTempStore
pour stocker les données de formulaire (multistep_data
clé). saveData()
): un espace réservé pour la logique de sauvegarde des données réelle (l'implémentation dépend de vos besoins spécifiques). deleteStore()
): supprime les données stockées après une soumission réussie. MultiStepOneForm.php: La première forme:
MultistepFormBase
. name
et email
. PrivateTempStore
pour la pré-population. demo.multistep_two
lors de la soumission. MultiSteptWoForm.php: La deuxième forme:
MultistepFormBase
. age
et location
. PrivateTempStore
. demo.multistep_one
. saveData()
de la classe de base lors de la soumission puis redirige. Demo.Routing.yml: définit les routes pour demo.multistep_one
et demo.multistep_two
, les associant aux classes de forme respectives.
Captures d'écran illustratives:
Extraits de code (illustratif):
(MultiStepformBase.php - Extrat):
protected function saveData() { // Save data (e.g., create a configuration entity) $this->deleteStore(); drupal_set_message($this->t('Form saved!')); }
(MultiStepOneForm.php - Extrat):
$form['name'] = [ '#type' => 'textfield', '#title' => $this->t('Your name'), '#default_value' => $this->store->get('name') ?: '', ];
Conclusion:
Cette approche fournit un moyen propre et efficace de créer des formes en plusieurs étapes dans Drupal 8, en tirant parti de la puissance du PrivateTempStore
pour la gestion des données croisées. L'utilisation d'une classe de base abstraite favorise l'organisation du code et la réutilisabilité. Cette structure peut facilement être étendue pour accueillir plus d'étapes. La section FAQ est omise ici pour la concision, car le corps de l'article couvre déjà les aspects essentiels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!