Edited at

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()に同様の記述を用意すれば実装可能です。