class DataFieldRow
Plugin which displays fields as raw data.
Attributes
#[ViewsRow(id: "data_field", title: new TranslatableMarkup("Fields"), help: new TranslatableMarkup("Use fields as row data."), display_types: [
"data",
])]
  Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait extends \Drupal\Component\Plugin\PluginBase- class \Drupal\views\Plugin\views\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface extends \Drupal\Core\Plugin\PluginBase- class \Drupal\views\Plugin\views\row\RowPluginBase extends \Drupal\views\Plugin\views\PluginBase- class \Drupal\rest\Plugin\views\row\DataFieldRow extends \Drupal\views\Plugin\views\row\RowPluginBase
 
 
- class \Drupal\views\Plugin\views\row\RowPluginBase extends \Drupal\views\Plugin\views\PluginBase
 
- class \Drupal\views\Plugin\views\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface extends \Drupal\Core\Plugin\PluginBase
 
- class \Drupal\Core\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait extends \Drupal\Component\Plugin\PluginBase
Expanded class hierarchy of DataFieldRow
Related topics
File
- 
              core/modules/ rest/ src/ Plugin/ views/ row/ DataFieldRow.php, line 17 
Namespace
Drupal\rest\Plugin\views\rowView source
class DataFieldRow extends RowPluginBase {
  
  /**
   * {@inheritdoc}
   */
  protected $usesFields = TRUE;
  
  /**
   * Stores an array of prepared field aliases from options.
   *
   * @var array
   */
  protected $replacementAliases = [];
  
  /**
   * Stores an array of options to determine if the raw field output is used.
   *
   * @var array
   */
  protected $rawOutputOptions = [];
  
  /**
   * {@inheritdoc}
   */
  public function init(ViewExecutable $view, DisplayPluginBase $display, ?array &$options = NULL) {
    parent::init($view, $display, $options);
    if (!empty($this->options['field_options'])) {
      $options = (array) $this->options['field_options'];
      // Prepare a trimmed version of replacement aliases.
      $aliases = static::extractFromOptionsArray('alias', $options);
      $this->replacementAliases = array_filter(array_map('trim', $aliases));
      // Prepare an array of raw output field options.
      $this->rawOutputOptions = static::extractFromOptionsArray('raw_output', $options);
    }
  }
  
  /**
   * {@inheritdoc}
   */
  protected function defineOptions() {
    $options = parent::defineOptions();
    $options['field_options'] = [
      'default' => [],
    ];
    return $options;
  }
  
  /**
   * {@inheritdoc}
   */
  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' => $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' => $options[$id]['raw_output'] ?? '',
        ];
      }
    }
  }
  
  /**
   * Form element validation handler for \Drupal\rest\Plugin\views\row\DataFieldRow::buildOptionsForm().
   */
  public function validateAliasName($element, FormStateInterface $form_state) {
    if (preg_match('@[^A-Za-z0-9_-]+@', $element['#value'])) {
      $form_state->setError($element, $this->t('The machine-readable name must contain only letters, numbers, dashes and underscores.'));
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function validateOptionsForm(&$form, FormStateInterface $form_state) {
    // Collect an array of aliases to validate.
    $aliases = static::extractFromOptionsArray('alias', $form_state->getValue([
      'row_options',
      'field_options',
    ]));
    // If array filter returns empty, no values have been entered. Unique keys
    // should only be validated if we have some.
    if (($filtered = array_filter($aliases)) && array_unique($filtered) !== $filtered) {
      $form_state->setErrorByName('aliases', $this->t('All field aliases must be unique'));
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function render($row) {
    $output = [];
    foreach ($this->view->field as $id => $field) {
      // If the raw output option has been set, just get the raw value.
      if (!empty($this->rawOutputOptions[$id])) {
        $value = $field->getValue($row);
      }
      else {
        // Advanced render for token replacement.
        $markup = $field->advancedRender($row);
        // Post render to support uncacheable fields.
        $field->postRender($row, $markup);
        $value = $field->last_render;
      }
      // Omit excluded fields from the rendered output.
      if (empty($field->options['exclude'])) {
        $output[$this->getFieldKeyAlias($id)] = $value;
      }
    }
    return $output;
  }
  
  /**
   * Return an alias for a field ID, as set in the options form.
   *
   * @param string $id
   *   The field id to lookup an alias for.
   *
   * @return string
   *   The matches user entered alias, or the original ID if nothing is found.
   */
  public function getFieldKeyAlias($id) {
    if (isset($this->replacementAliases[$id])) {
      return $this->replacementAliases[$id];
    }
    return $id;
  }
  
  /**
   * Extracts a set of option values from a nested options array.
   *
   * @param string $key
   *   The key to extract from each array item.
   * @param array $options
   *   The options array to return values from.
   *
   * @return array
   *   A regular one dimensional array of values.
   */
  protected static function extractFromOptionsArray($key, $options) {
    return array_map(function ($item) use ($key) {
      return $item[$key] ?? NULL;
    }, $options);
  }
}Members
| Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides | 
|---|---|---|---|---|---|---|
| DataFieldRow::$rawOutputOptions | protected | property | Stores an array of options to determine if the raw field output is used. | |||
| DataFieldRow::$replacementAliases | protected | property | Stores an array of prepared field aliases from options. | |||
| DataFieldRow::$usesFields | protected | property | Does the row plugin support to add fields to its output. | Overrides RowPluginBase::$usesFields | ||
| DataFieldRow::buildOptionsForm | public | function | Provide a form for setting options. | Overrides RowPluginBase::buildOptionsForm | ||
| DataFieldRow::defineOptions | protected | function | Information about options for all kinds of purposes will be held here. | Overrides RowPluginBase::defineOptions | ||
| DataFieldRow::extractFromOptionsArray | protected static | function | Extracts a set of option values from a nested options array. | |||
| DataFieldRow::getFieldKeyAlias | public | function | Return an alias for a field ID, as set in the options form. | |||
| DataFieldRow::init | public | function | Initialize the plugin. | Overrides PluginBase::init | ||
| DataFieldRow::render | public | function | Renders a row object. | Overrides RowPluginBase::render | ||
| DataFieldRow::validateAliasName | public | function | Form element validation handler for \Drupal\rest\Plugin\views\row\DataFieldRow::buildOptionsForm(). | |||
| DataFieldRow::validateOptionsForm | public | function | Validate the options form. | Overrides RowPluginBase::validateOptionsForm | ||
| DependencySerializationTrait::$_entityStorages | protected | property | An array of entity type IDs keyed by the property name of their storages. | |||
| DependencySerializationTrait::$_serviceIds | protected | property | An array of service IDs keyed by property name used for serialization. | |||
| DependencySerializationTrait::__sleep | public | function | 2 | |||
| DependencySerializationTrait::__wakeup | public | function | #[\ReturnTypeWillChange] | 2 | ||
| MessengerTrait::$messenger | protected | property | The messenger. | 25 | ||
| MessengerTrait::messenger | public | function | Gets the messenger. | 25 | ||
| MessengerTrait::setMessenger | public | function | Sets the messenger. | |||
| PluginBase::$configuration | protected | property | Configuration information passed into the plugin. | 1 | ||
| PluginBase::$definition | public | property | Plugins' definition. | |||
| PluginBase::$displayHandler | public | property | The display object this plugin is for. | |||
| PluginBase::$options | public | property | Options for this plugin will be held here. | |||
| PluginBase::$pluginDefinition | protected | property | The plugin implementation definition. | 1 | ||
| PluginBase::$pluginId | protected | property | The plugin ID. | |||
| PluginBase::$position | public | property | The handler position. | |||
| PluginBase::$renderer | protected | property | Stores the render API renderer. | 3 | ||
| PluginBase::$view | public | property | The top object of a view. | 1 | ||
| PluginBase::calculateDependencies | public | function | Calculates dependencies for the configured plugin. | Overrides DependentPluginInterface::calculateDependencies | 14 | |
| PluginBase::create | public static | function | Creates an instance of the plugin. | Overrides ContainerFactoryPluginInterface::create | 60 | |
| PluginBase::DERIVATIVE_SEPARATOR | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||||
| PluginBase::destroy | public | function | Clears a plugin. | Overrides ViewsPluginInterface::destroy | 2 | |
| PluginBase::doFilterByDefinedOptions | protected | function | Do the work to filter out stored options depending on the defined options. | |||
| PluginBase::filterByDefinedOptions | public | function | Filter out stored options depending on the defined options. | Overrides ViewsPluginInterface::filterByDefinedOptions | ||
| PluginBase::getAvailableGlobalTokens | public | function | Returns an array of available token replacements. | Overrides ViewsPluginInterface::getAvailableGlobalTokens | ||
| PluginBase::getBaseId | public | function | Gets the base_plugin_id of the plugin instance. | Overrides DerivativeInspectionInterface::getBaseId | ||
| PluginBase::getDerivativeId | public | function | Gets the derivative_id of the plugin instance. | Overrides DerivativeInspectionInterface::getDerivativeId | ||
| PluginBase::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | Overrides PluginInspectionInterface::getPluginDefinition | 2 | |
| PluginBase::getPluginId | public | function | Gets the plugin ID of the plugin instance. | Overrides PluginInspectionInterface::getPluginId | ||
| PluginBase::getProvider | public | function | Returns the plugin provider. | Overrides ViewsPluginInterface::getProvider | ||
| PluginBase::getRenderer | protected | function | Returns the render API renderer. | 1 | ||
| PluginBase::globalTokenForm | public | function | Adds elements for available core tokens to a form. | Overrides ViewsPluginInterface::globalTokenForm | ||
| PluginBase::globalTokenReplace | public | function | Returns a string with any core tokens replaced. | Overrides ViewsPluginInterface::globalTokenReplace | ||
| PluginBase::INCLUDE_ENTITY | constant | Include entity row languages when listing languages. | ||||
| PluginBase::INCLUDE_NEGOTIATED | constant | Include negotiated languages when listing languages. | ||||
| PluginBase::isConfigurable | public | function | Determines if the plugin is configurable. | |||
| PluginBase::listLanguages | protected | function | Makes an array of languages, optionally including special languages. | |||
| PluginBase::pluginTitle | public | function | Return the human readable name of the display. | Overrides ViewsPluginInterface::pluginTitle | ||
| PluginBase::preRenderAddFieldsetMarkup | public static | function | Moves form elements into fieldsets for presentation purposes. | Overrides ViewsPluginInterface::preRenderAddFieldsetMarkup | ||
| PluginBase::preRenderFlattenData | public static | function | Flattens the structure of form elements. | Overrides ViewsPluginInterface::preRenderFlattenData | ||
| PluginBase::queryLanguageSubstitutions | public static | function | Returns substitutions for Views queries for languages. | |||
| PluginBase::setOptionDefaults | protected | function | Fills up the options of the plugin with defaults. | |||
| PluginBase::summaryTitle | public | function | Returns the summary of the settings in the display. | Overrides ViewsPluginInterface::summaryTitle | 6 | |
| PluginBase::themeFunctions | public | function | Provide a full list of possible theme templates used by this style. | Overrides ViewsPluginInterface::themeFunctions | 1 | |
| PluginBase::trustedCallbacks | public static | function | Lists the trusted callbacks provided by the implementing class. | Overrides TrustedCallbackInterface::trustedCallbacks | 6 | |
| PluginBase::unpackOptions | public | function | Unpacks options over our existing defaults. | Overrides ViewsPluginInterface::unpackOptions | ||
| PluginBase::usesOptions | public | function | Returns the usesOptions property. | Overrides ViewsPluginInterface::usesOptions | 8 | |
| PluginBase::validate | public | function | Validate that the plugin is correct and can be saved. | Overrides ViewsPluginInterface::validate | 6 | |
| PluginBase::viewsTokenReplace | protected | function | Replaces Views' tokens in a given string. | 1 | ||
| PluginBase::VIEWS_QUERY_LANGUAGE_SITE_DEFAULT | constant | Query string to indicate the site default language. | ||||
| PluginBase::__construct | public | function | Constructs a PluginBase object. | Overrides PluginBase::__construct | 19 | |
| RowPluginBase::$base_field | public | property | The actual field used. | 2 | ||
| RowPluginBase::$field_alias | public | property | The field alias. | 1 | ||
| RowPluginBase::$usesOptions | protected | property | Denotes whether the plugin has an additional options form. | Overrides PluginBase::$usesOptions | 1 | |
| RowPluginBase::preRender | public | function | Allow the style to do stuff before each row is rendered. | 4 | ||
| RowPluginBase::query | public | function | Add anything to the query that we might need to. | Overrides PluginBase::query | 2 | |
| RowPluginBase::submitOptionsForm | public | function | Perform any necessary changes to the form values prior to storage. | Overrides PluginBase::submitOptionsForm | 1 | |
| RowPluginBase::usesFields | public | function | Returns the usesFields property. | 4 | ||
| StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | ||
| StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | |||
| StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | |||
| StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | |||
| StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | ||
| StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | |||
| TrustedCallbackInterface::THROW_EXCEPTION | constant | Untrusted callbacks throw exceptions. | ||||
| TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION | constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. | ||||
| TrustedCallbackInterface::TRIGGER_WARNING | Deprecated | constant | Untrusted callbacks trigger E_USER_WARNING errors. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
