ホームページ > バックエンド開発 > PHPチュートリアル > Drupal 8サードパーティの設定と擬似フィールド

Drupal 8サードパーティの設定と擬似フィールド

Christopher Nolan
リリース: 2025-02-16 13:14:09
オリジナル
996 人が閲覧しました

このDrupal 8モジュールは、異なるノードバンドルに取り付けられる再利用可能なフォームを作成します。 シンプルでありながら強力な、再利用可能なフォームシステムを構築しましょう。 目標は、各ノードページにフォームを簡単に読み込み、ノードバンドルごとのフォームタイプを選択することです。

Drupal 8 Third Party Settings and Pseudo-Fields

拡張機能用のベースプラグインクラスを使用して、カスタムプラグインタイプ

を既に作成しています。各プラグインは、注釈で定義されたフォームクラスと対話します。 同様に、ベースフォームクラスは、新しいフォームの基盤を提供します。 ReusableForm次に、これらのプラグインを使用してコアノードタイプを構成し、ノードディスプレイ中に適切なフォームをレンダリングします。 まず、シンプルな

プラグインを作成しましょう。

ReusableForm

重要な概念:

    ReusableFormプラグイン:
  • ノードバンドルごとのフォームの選択を可能にするカスタムプラグインタイプ。 フォームクラス:
  • 個々のフォームの構造と論理を定義します。
  • プラグインマネージャーサービス:利用可能なアクセスを提供します
  • プラグイン。
  • サードパーティの設定:ReusableFormノードタイプごとにプラグインの選択を保存します
  • pseudoフィールド:ノードディスプレイで選択したフォームをレンダリングすることを許可します。
  • 最初のプラグインを作成 ディレクトリでは、
を作成します

これにより、ベースフォームが拡張され、必要な方法が実装されます。 メソッドは、基本クラスのロジックを使用します。 後の実装のために提出処理は残されています

さあ、

src/Formでプラグインを作成します BasicForm.php

アノテーションは、プラグインのID、名前、および関連フォームクラスを定義します。
<?php
namespace Drupal\reusable_forms\Form;

use Drupal\Core\Form\FormStateInterface;

class BasicForm extends ReusableFormBase {

  public function getFormId() {
    return 'basic_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildForm($form, $form_state);
    return $form;
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Handle form submission.
  }
}
ログイン後にコピー

ノードタイプ構成buildForm

プラグインにアクセスしてロードするには、プラグインマネージャーにサービスを提供します。 src/Plugin/ReusableForm/BasicForm.php

<?php
namespace Drupal\reusable_forms\Plugin\ReusableForm;

use Drupal\reusable_forms\ReusableFormPluginBase;

/**
 * @ReusableForm(
 *   id = "basic_form",
 *   name = @Translation("Basic Form"),
 *   form = "Drupal\reusable_forms\Form\BasicForm"
 * )
 */
class BasicForm extends ReusableFormPluginBase {}
ログイン後にコピー

次に、ノードタイプの編集フォーム(

)を変更します

これにより、再利用可能なフォームを有効にするチェックボックスと、プラグインを選択する選択リストが追加されます。 コールバックは、サードパーティの設定で選択を保存します。

構成スキーマ(reusable_forms.services.yml

services:
  plugin.manager.reusable_forms:
    class: Drupal\reusable_forms\ReusableFormsManager
    parent: default_plugin_manager
ログイン後にコピー

reusable_forms.module

ノードビュー
use Drupal\Core\Form\FormStateInterface;
use Drupal\node\NodeTypeInterface;

function reusable_forms_form_node_type_form_alter(&$form, FormStateInterface $form_state) {
  // ... (Code to add checkbox and radios for enabling and selecting forms) ...
  $form['#entity_builders'][] = 'reusable_forms_form_node_type_form_builder';
}

function reusable_forms_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) {
  // ... (Code to save/unset third-party settings) ...
}
ログイン後にコピー

#entity_builders擬似フィールドを作成(

):

reusable_forms.schema.yml擬似フィールドを定義し、選択したフォームをレンダリングします。

これにより、基本構造が完了します。 変更を加えた後、キャッシュをクリアすることを忘れないでください。 この詳細な説明は、Drupal 8でより複雑な再利用可能なフォーム機能を構築するための強固な基盤を提供します。

以上がDrupal 8サードパーティの設定と擬似フィールドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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