ホームページ > バックエンド開発 > PHPチュートリアル > Drupal 8でマルチステップフォームを構築する方法8

Drupal 8でマルチステップフォームを構築する方法8

Christopher Nolan
リリース: 2025-02-17 09:31:08
オリジナル
1079 人が閲覧しました

この記事では、2つの別々のフォームとDrupalのコア一時データストレージを使用して、Drupal 8にマルチステップフォームを構築することを示しています。 説明を合理化し、流れを改善しましょう

重要な概念:

  • 2つの独立したフォーム:マルチステップフォームは、ユーザー入力のサブセットをそれぞれ処理する2つの異なるフォームから構築されています。
  • 抽象的なベースクラス(MultiStepFormBase):
  • 依存関係注入、形式の足場、データ処理などの一般的な機能は、抽象的なベースクラスに集中しています。これにより、コードの再利用性と保守性が促進されます privateTempstore:
  • Drupal's
  • 複数の要求にわたってデータの持続性を保証し、マルチステッププロセスを有効にします。 ルート定義:PrivateTempStore各フォームに対して個別のルートが定義されているため、ステップ間のナビゲーションが可能になります。
  • 実装の詳細:
解決策には:

multiStepformbase.php:

この抽象的なベースクラスは、一般的なタスクを処理します:
  1. 依存関係注射:注入、および

    • セッション管理:匿名のユーザーにセッションが存在するようにします PrivateTempStoreFactoryデータストレージ:フォームデータを保存するためにSessionManagerInterfaceを使用します(AccountInterfacekey)。
    • Data Saving(データの削除(
    • ):提出が成功した後、保存されたデータを削除します。PrivateTempStore multistep_data
    • saveData()
    • MultiStePoneForm.php:
    • 最初のフォーム:deleteStore()
  2. を拡張します

    2つのフィールドが含まれています:

      事前入力のために以前に入力された値を
    • から取得します。MultistepFormBase
    • 提出時に
    • にリダイレクトします。name email
    • PrivateTempStore
    • multiSteptwoform.php:
    • 2番目のフォーム:demo.multistep_two
  3. を拡張します

    2つのフィールドが含まれています:

      以前に入力された値を取得
    • MultistepFormBase
    • age提出時にベースクラスからlocationを呼び出してからリダイレクトします。
    • PrivateTempStore
    • demo.routing.yml:demo.multistep_one
    • および
    • のルートを定義し、それぞれのフォームクラスに関連付けます。 saveData()
  4. 説明的なスクリーンショット:
  5. demo.multistep_one

    How to Build Multi-step Forms in Drupal 8

    コードスニペット(イラスト):

    (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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート