ImageButton.php in Drupal 8
File
core/lib/Drupal/Core/Render/Element/ImageButton.php
View source
<?php
namespace Drupal\Core\Render\Element;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;
class ImageButton extends Submit {
public function getInfo() {
$info = parent::getInfo();
unset($info['name']);
return [
'#return_value' => TRUE,
'#has_garbage_value' => TRUE,
'#src' => NULL,
'#theme_wrappers' => [
'input__image_button',
],
] + $info;
}
public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
if ($input !== FALSE) {
if (!empty($input)) {
return $element['#return_value'];
}
else {
$input = $form_state
->getUserInput();
foreach (explode('[', $element['#name']) as $element_name) {
if (substr($element_name, -1) == ']') {
$element_name = substr($element_name, 0, -1);
}
if (!isset($input[$element_name])) {
if (isset($input[$element_name . '_x'])) {
return $element['#return_value'];
}
return NULL;
}
$input = $input[$element_name];
}
return $element['#return_value'];
}
}
}
public static function preRenderButton($element) {
$element['#attributes']['type'] = 'image';
Element::setAttributes($element, [
'id',
'name',
'value',
]);
$element['#attributes']['src'] = file_url_transform_relative(file_create_url($element['#src']));
if (!empty($element['#title'])) {
$element['#attributes']['alt'] = $element['#title'];
$element['#attributes']['title'] = $element['#title'];
}
$element['#attributes']['class'][] = 'image-button';
if (!empty($element['#button_type'])) {
$element['#attributes']['class'][] = 'image-button--' . $element['#button_type'];
}
$element['#attributes']['class'][] = 'js-form-submit';
$element['#attributes']['class'][] = 'form-submit';
if (!empty($element['#attributes']['disabled'])) {
$element['#attributes']['class'][] = 'is-disabled';
}
return $element;
}
}
Classes
Name |
Description |
ImageButton |
Provides a form element for a submit button with an image. |