メモ
Drupal8

Drupal8のフォームにリセットボタンをつける

More than 1 year has passed since last update.

Drupal8のフォームにはリセットボタンがデフォルトではないので、一手間加える必要があります。以下は、その手順です。

独自モジュールを作成する

独自モジュールを作成します。ここでは作成方法は割愛します。

hook_form_alter()を実装する

hook_form_alter()を実装して、リセットボタンを追加するようにします。html_tagを利用してボタンタグを用意します。#attributesでtypeにresetを指定することでリセットボタンになります。classは配列にする必要があるので注意してください。

hoge.module
function hoge_form_alter(&$form, ormStateInterface $form_state, $form_id)
{
    if ($form_id == 'my_form_id') {
        // リセットボタン追加
        $form['actions']['reset'] = [
          '#type' => 'html_tag',
          '#tag' => 'button',
          '#attributes' => [
            'class' => ['some-class'],
            'type' => 'reset',
          ],
          '#value' => t('Reset'),
        ];
    }
}

独自モジュールをインストールする

作ったモジュールを管理画面からインストールします。

まとめ

比較的容易に、リセットボタンを用意することができました。独自のフォームのみに反映させるのであれば、FormBaseを拡張したクラスのbuildForm()に同様の記述を用意すれば実装可能です。