true, 'autofocus' => true, 'disabled' => true, 'form' => true, 'formaction' => true, 'formenctype' => true, 'formmethod' => true, 'formnovalidate' => true, 'formtarget' => true, 'type' => true, 'value' => true, ]; /** * Valid values for the button type * * @var array */ protected $validTypes = [ 'button' => true, 'reset' => true, 'submit' => true, ]; /** * Invoke helper as functor * * Proxies to {@link render()}. * * @template T as null|ElementInterface * @psalm-param T $element * @psalm-return (T is null ? self : string) * @return string|FormButton */ public function __invoke(?ElementInterface $element = null, ?string $buttonContent = null) { if (! $element) { return $this; } return $this->render($element, $buttonContent); } /** * Render a form '; } /** * Determine button type to use */ protected function getType(ElementInterface $element): string { $type = $element->getAttribute('type'); if (! is_string($type) || $type === '') { return 'submit'; } $type = strtolower($type); if (! isset($this->validTypes[$type])) { return 'submit'; } return $type; } }