この記事では、2つの別々のフォームとDrupalのコア一時データストレージを使用して、Drupal 8にマルチステップフォームを構築することを示しています。 説明を合理化し、流れを改善しましょう
重要な概念:
PrivateTempStore
各フォームに対して個別のルートが定義されているため、ステップ間のナビゲーションが可能になります。
multiStepformbase.php:
この抽象的なベースクラスは、一般的なタスクを処理します:依存関係注射:注入、、および
。PrivateTempStoreFactory
データストレージ:フォームデータを保存するためにSessionManagerInterface
を使用します(AccountInterface
key)。PrivateTempStore
multistep_data
saveData()
deleteStore()
2つのフィールドが含まれています:と。
MultistepFormBase
name
email
PrivateTempStore
demo.multistep_two
2つのフィールドが含まれています:と。
MultistepFormBase
age
提出時にベースクラスからlocation
を呼び出してからリダイレクトします。
PrivateTempStore
demo.multistep_one
saveData()
demo.multistep_one
コードスニペット(イラスト):
(multiSpformbase.php -excerpt):
protected function saveData() { // Save data (e.g., create a configuration entity) $this->deleteStore(); drupal_set_message($this->t('Form saved!')); }
(multiSteponeform.php -excterpt):
$form['name'] = [ '#type' => 'textfield', '#title' => $this->t('Your name'), '#default_value' => $this->store->get('name') ?: '', ];
結論:
このアプローチは、Drupal 8にマルチステップフォームを作成するためのクリーンで効率的な方法を提供し、クロスレクエストデータ管理のためのPrivateTempStore
のパワーを活用します。 抽象的なベースクラスを使用すると、コード組織と再利用性が促進されます。 この構造は、より多くのステップに対応するために簡単に拡張できます。 記事本体はすでに本質的な側面をカバーしているため、BrevityのためにFAQセクションは省略されています。
以上がDrupal 8でマルチステップフォームを構築する方法8の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。