You are here

public function DataFieldRow::buildOptionsForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/rest/src/Plugin/views/row/DataFieldRow.php \Drupal\rest\Plugin\views\row\DataFieldRow::buildOptionsForm()

Provide a form for setting options.

Overrides RowPluginBase::buildOptionsForm

File

core/modules/rest/src/Plugin/views/row/DataFieldRow.php, line 72

Class

DataFieldRow
Plugin which displays fields as raw data.

Namespace

Drupal\rest\Plugin\views\row

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  parent::buildOptionsForm($form, $form_state);
  $form['field_options'] = [
    '#type' => 'table',
    '#header' => [
      $this
        ->t('Field'),
      $this
        ->t('Alias'),
      $this
        ->t('Raw output'),
    ],
    '#empty' => $this
      ->t('You have no fields. Add some to your view.'),
    '#tree' => TRUE,
  ];
  $options = $this->options['field_options'];
  if ($fields = $this->view->display_handler
    ->getOption('fields')) {
    foreach ($fields as $id => $field) {

      // Don't show the field if it has been excluded.
      if (!empty($field['exclude'])) {
        continue;
      }
      $form['field_options'][$id]['field'] = [
        '#markup' => $id,
      ];
      $form['field_options'][$id]['alias'] = [
        '#title' => $this
          ->t('Alias for @id', [
          '@id' => $id,
        ]),
        '#title_display' => 'invisible',
        '#type' => 'textfield',
        '#default_value' => isset($options[$id]['alias']) ? $options[$id]['alias'] : '',
        '#element_validate' => [
          [
            $this,
            'validateAliasName',
          ],
        ],
      ];
      $form['field_options'][$id]['raw_output'] = [
        '#title' => $this
          ->t('Raw output for @id', [
          '@id' => $id,
        ]),
        '#title_display' => 'invisible',
        '#type' => 'checkbox',
        '#default_value' => isset($options[$id]['raw_output']) ? $options[$id]['raw_output'] : '',
      ];
    }
  }
}