このDrupal 8モジュールは、異なるノードバンドルに取り付けられる再利用可能なフォームを作成します。 シンプルでありながら強力な、再利用可能なフォームシステムを構築しましょう。 目標は、各ノードページにフォームを簡単に読み込み、ノードバンドルごとのフォームタイプを選択することです。
を既に作成しています。各プラグインは、注釈で定義されたフォームクラスと対話します。 同様に、ベースフォームクラスは、新しいフォームの基盤を提供します。
ReusableForm
次に、これらのプラグインを使用してコアノードタイプを構成し、ノードディスプレイ中に適切なフォームをレンダリングします。 まず、シンプルな
ReusableForm
ReusableForm
ノードタイプごとにプラグインの選択を保存します
これにより、ベースフォームが拡張され、必要な方法が実装されます。 メソッドは、基本クラスのロジックを使用します。 後の実装のために提出処理は残されています
さあ、:src/Form
でプラグインを作成します
BasicForm.php
<?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サードパーティの設定と擬似フィールドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。