Skip to content

Button kits

Button kits live in src/Kits/Button/. All of them use AjaxTrait, so any button can trigger an AJAX request. ButtonKit also sets #name to the kit ID, which Form API uses to tell buttons apart ($form_state->getTriggeringElement()).

ButtonKit

A plain button element. It does not submit the form by default in the browser, but Form API still processes it; combine it with setAjax() for AJAX actions.

Class Drupal\formfactorykits\Kits\Button\ButtonKit (src/Kits/Button/ButtonKit.php)
Extends FormFactoryKit
Factory method $kits->button()
Form API #type button
Default ID button
Traits AjaxTrait, DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait

Setters

Method From
setAjax(string $wrapper = 'ajax-wrapper') AjaxTrait (trait)
setAjaxCallback(string $callback = '::ajaxFormRebuild') AjaxTrait (trait)
setAjaxSetting(string $key, array\|string\|null $value) AjaxTrait (trait)
setAjaxSettings(array $array) AjaxTrait (trait)
setAjaxWrapper(string $wrapper = 'ajax-wrapper') AjaxTrait (trait)
setButtonType(string $type) ButtonKit
setDefaultValue(array\|string\|null $value) DefaultValueTrait (trait)
setPrefix(array\|string\|null $value) PrefixTrait (trait)
setSuffix(array\|string\|null $value) SuffixTrait (trait)
setValue(array\|string\|null $value) ValueTrait (trait)

Example

$kit = $kits->button('refresh', ['value' => 'Refresh'])->setAjax('results-wrapper');

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'refresh' => [
    '#value' => 'Refresh',
    '#type' => 'button',
    '#name' => 'refresh',
    '#ajax' => [
      'wrapper' => 'results-wrapper',
      'callback' => '::ajaxFormRebuild',
    ],
  ],
]

SubmitButtonKit

A submit button. Its default label is t('Submit') and its #button_type is primary.

Class Drupal\formfactorykits\Kits\Button\SubmitButtonKit (src/Kits/Button/SubmitButtonKit.php)
Extends ButtonKit
Factory method $kits->submit()
Form API #type submit
Default ID submit
Traits AjaxTrait, DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait

Setters

Method From
setAjax(string $wrapper = 'ajax-wrapper') AjaxTrait (trait)
setAjaxCallback(string $callback = '::ajaxFormRebuild') AjaxTrait (trait)
setAjaxSetting(string $key, array\|string\|null $value) AjaxTrait (trait)
setAjaxSettings(array $array) AjaxTrait (trait)
setAjaxWrapper(string $wrapper = 'ajax-wrapper') AjaxTrait (trait)
setButtonType(string $type) ButtonKit
setDefaultValue(array\|string\|null $value) DefaultValueTrait (trait)
setPrefix(array\|string\|null $value) PrefixTrait (trait)
setSuffix(array\|string\|null $value) SuffixTrait (trait)
setValue(array\|string\|null $value) ValueTrait (trait)

Example

$kit = $kits->submit();

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'submit' => [
    '#value' => t('Submit'),
    '#type' => 'submit',
    '#button_type' => 'primary',
  ],
]

ImageButtonKit

An image_button: a submit button drawn as an image.

Class Drupal\formfactorykits\Kits\Button\ImageButtonKit (src/Kits/Button/ImageButtonKit.php)
Extends ButtonKit
Factory method $kits->imageButton()
Form API #type image_button
Default ID image_button
Traits AjaxTrait, AttributesTrait, DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait

Setters

Method From
setAjax(string $wrapper = 'ajax-wrapper') AjaxTrait (trait)
setAjaxCallback(string $callback = '::ajaxFormRebuild') AjaxTrait (trait)
setAjaxSetting(string $key, array\|string\|null $value) AjaxTrait (trait)
setAjaxSettings(array $array) AjaxTrait (trait)
setAjaxWrapper(string $wrapper = 'ajax-wrapper') AjaxTrait (trait)
setAlternativeText(string $title) ImageButtonKit
setAttribute(string $name, array\|string\|null $value) AttributesTrait (trait)
setAttributes(array $attributes) AttributesTrait (trait)
setButtonType(string $type) ButtonKit
setDefaultValue(array\|string\|null $value) DefaultValueTrait (trait)
setPrefix(array\|string\|null $value) PrefixTrait (trait)
setSource(string $source) ImageButtonKit
setSuffix(array\|string\|null $value) SuffixTrait (trait)
setValue(array\|string\|null $value) ValueTrait (trait)

Example

$kit = $kits->imageButton('go', ['value' => 'Go'])->setSource('/core/misc/icons/787878/cog.svg')->setAlternativeText('Go');

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'go' => [
    '#value' => 'Go',
    '#type' => 'image_button',
    '#name' => 'go',
    '#src' => '/core/misc/icons/787878/cog.svg',
    '#attributes' => [
      'alt' => 'Go',
    ],
  ],
]