mcpField
D
drupal-form-api

drupal-form-api

github.com/edutrul開発7349 回インストール21 週間前に更新
リポジトリ

drupal-form-api について

Drupal 開発者向けの Form API リファレンスです。通常のフォームと設定フォームの構成例に加え、よく使われるフォーム要素と用途を紹介します。

主な機能

  1. 01FormBase フォームの作成
  2. 02ConfigFormBase 設定フォームの作成
  3. 03設定名とフォーム ID の定義
  4. 04代表的なフォーム要素の確認

活用シーン

  1. 01モジュールの入力フォーム作成
  2. 02モジュール設定ページの構築
  3. 03用途に合った入力要素の選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-form-api

インストール後、Claude Code で/drupal-form-apiを入力して読み込まれたか確認します。

同梱ファイルREADME.md

README(原文)English

プロジェクトの README より

この README の日本語訳はまだありません。以下は英語の原文です。日本語の紹介はページ上部をご覧ください。

Drupal Form API

Simple Form (FormBase)

// src/Form/MyForm.php
namespace Drupal\my_module\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

final class MyForm extends FormBase {

  public function __construct(
    private readonly EntityTypeManagerInterface $entityTypeManager,
  ) {}

  public static function create(ContainerInterface $container): static {
    return new static(
      $container->get('entity_type.manager'),
    );
  }

  public function getFormId(): string {
    return 'my_module_my_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state): array {
    $form['name'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Name'),
      '#required' => TRUE,
    ];
    $form['submit'] = [
      '#type' => 'submit',
      '#value' => $this->t('Submit'),
    ];
    return $form;
  }

  public function submitForm(array &$form, FormStateInterface $form_state): void {
    $name = $form_state->getValue('name');
    $this->messenger()->addStatus($this->t('Hello @name!', ['@name' => $name]));
  }

}

Config Form (ConfigFormBase)

final class MySettingsForm extends ConfigFormBase {

  protected function getEditableConfigNames(): array {
    return ['my_module.settings'];
  }

  public function getFormId(): string {
    return 'my_module_settings';
  }

  public function buildForm(array $form, FormStateInterface $form_state): array {
    $config = $this->config('my_module.settings');
    $form['enabled'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Enable feature'),
      '#default_value' => $config->get('enabled'),
    ];
    return parent::buildForm($form, $form_state);
  }

  public function submitForm(array &$form, FormStateInterface $form_state): void {
    $this->config('my_module.settings')
      ->set('enabled', $form_state->getValue('enabled'))
      ->save();
    parent::submitForm($form, $form_state);
  }

}

Common Form Elements

TypeDescription
textfieldSingle line text
textareaMulti-line text
selectDropdown
checkboxesMultiple checkboxes
radiosRadio buttons
checkboxSingle checkbox
numberNumeric input
emailEmail input
managed_fileManaged file upload
entity_autocompleteEntity reference autocomplete
dateDate picker
detailsCollapsible group
containerNon-visual wrapper
hiddenHidden field
submitSubmit button

コメント