class ImageButton in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Render/Element/ImageButton.php \Drupal\Core\Render\Element\ImageButton
Provides a form element for a submit button with an image.
Plugin annotation
@FormElement("image_button");Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, StringTranslationTrait- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface- class \Drupal\Core\Render\Element\FormElement implements FormElementInterface- class \Drupal\Core\Render\Element\Button- class \Drupal\Core\Render\Element\Submit- class \Drupal\Core\Render\Element\ImageButton
 
 
- class \Drupal\Core\Render\Element\Submit
 
- class \Drupal\Core\Render\Element\Button
 
- class \Drupal\Core\Render\Element\FormElement implements FormElementInterface
 
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, StringTranslationTrait
Expanded class hierarchy of ImageButton
2 #type uses of ImageButton
- EntityDisplayFormBase::buildFieldRow in core/modules/ field_ui/ src/ Form/ EntityDisplayFormBase.php 
- Builds the table row structure for a single field.
- FormTestDisabledElementsForm::buildForm in core/modules/ system/ tests/ modules/ form_test/ src/ Form/ FormTestDisabledElementsForm.php 
- Form constructor.
File
- core/lib/ Drupal/ Core/ Render/ Element/ ImageButton.php, line 18 
- Contains \Drupal\Core\Render\Element\ImageButton.
Namespace
Drupal\Core\Render\ElementView source
class ImageButton extends Submit {
  /**
   * {@inheritdoc}
   */
  public function getInfo() {
    $info = parent::getInfo();
    unset($info['name']);
    return array(
      '#return_value' => TRUE,
      '#has_garbage_value' => TRUE,
      '#src' => NULL,
      '#theme_wrappers' => array(
        'input__image_button',
      ),
    ) + $info;
  }
  /**
   * {@inheritdoc}
   */
  public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
    if ($input !== FALSE) {
      if (!empty($input)) {
        // If we're dealing with Mozilla or Opera, we're lucky. It will
        // return a proper value, and we can get on with things.
        return $element['#return_value'];
      }
      else {
        // Unfortunately, in IE we never get back a proper value for THIS
        // form element. Instead, we get back two split values: one for the
        // X and one for the Y coordinates on which the user clicked the
        // button. We'll find this element in the #post data, and search
        // in the same spot for its name, with '_x'.
        $input = $form_state
          ->getUserInput();
        foreach (explode('[', $element['#name']) as $element_name) {
          // chop off the ] that may exist.
          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'];
      }
    }
  }
  /**
   * {@inheritdoc}
   */
  public static function preRenderButton($element) {
    $element['#attributes']['type'] = 'image';
    Element::setAttributes($element, array(
      'id',
      'name',
      'value',
    ));
    $element['#attributes']['src'] = 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;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| Button:: | public static | function | Processes a form button element. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| FormElement:: | public static | function | Adds autocomplete functionality to elements. | |
| FormElement:: | public static | function | #process callback for #pattern form element property. | |
| FormElement:: | public static | function | #element_validate callback for #pattern form element property. | |
| ImageButton:: | public | function | Returns the element properties for this element. Overrides Submit:: | |
| ImageButton:: | public static | function | Prepares a #type 'button' render element for input.html.twig. Overrides Button:: | |
| ImageButton:: | public static | function | Determines how user input is mapped to an element's #value property. Overrides FormElement:: | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 2 | 
| PluginBase:: | protected | property | The plugin implementation definition. | |
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Constructs a Drupal\Component\Plugin\PluginBase object. | 69 | 
| RenderElement:: | public static | function | Adds Ajax information about an element to communicate with JavaScript. | |
| RenderElement:: | public static | function | Adds members of this group as actual elements for rendering. | |
| RenderElement:: | public static | function | Form element processing handler for the #ajax form property. | |
| RenderElement:: | public static | function | Arranges elements into groups. | |
| RenderElement:: | public static | function | Sets a form element's class attribute. Overrides ElementInterface:: | |
| StringTranslationTrait:: | protected | property | The string translation service. | |
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | 
