function TextareaWithSummaryWidget::formElement

Same name and namespace in other branches
  1. 9 core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php \Drupal\text\Plugin\Field\FieldWidget\TextareaWithSummaryWidget::formElement()
  2. 8.9.x core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php \Drupal\text\Plugin\Field\FieldWidget\TextareaWithSummaryWidget::formElement()
  3. 11.x core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php \Drupal\text\Plugin\Field\FieldWidget\TextareaWithSummaryWidget::formElement()

Overrides TextareaWidget::formElement

File

core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php, line 71

Class

TextareaWithSummaryWidget
Plugin implementation of the 'text_textarea_with_summary' widget.

Namespace

Drupal\text\Plugin\Field\FieldWidget

Code

public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
    $element = parent::formElement($items, $delta, $element, $form, $form_state);
    $display_summary = $items[$delta]->summary || $this->getFieldSetting('display_summary');
    $required = empty($form['#type']) && $this->getFieldSetting('required_summary');
    $element['summary'] = [
        '#type' => $display_summary ? 'textarea' : 'value',
        '#default_value' => $items[$delta]->summary,
        '#title' => $this->t('Summary'),
        '#rows' => $this->getSetting('summary_rows'),
        '#description' => !$required ? $this->t('Leave blank to use trimmed value of full text as the summary.') : '',
        '#attributes' => [
            'class' => [
                'text-summary',
            ],
        ],
        '#prefix' => '<div class="js-text-summary-wrapper text-summary-wrapper">',
        '#suffix' => '</div>',
        '#weight' => -10,
        '#required' => $required,
    ];
    if (!$this->getSetting('show_summary') && !$required) {
        $element['summary']['#attributes']['class'][] = 'js-text-summary';
        $element['summary']['#attached']['library'][] = 'text/drupal.text';
    }
    return $element;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.