class LegacyFormatter

Plugin implementation for legacy formatters.

This special implementation acts as a temporary BC layer for formatters that have not been converted to Plugins, and bridges new methods to the old-style hook_field_formatter_*() callbacks.

This class is not discovered by the annotations reader, but referenced by the Drupal\field\Plugin\Discovery\LegacyDiscoveryDecorator.

@todo Remove once all core formatters have been converted.

Hierarchy

Expanded class hierarchy of LegacyFormatter

File

drupal/core/modules/field/lib/Drupal/field/Plugin/field/formatter/LegacyFormatter.php, line 25
Definition of Drupal\field\Plugin\field\formatter\LegacyFormatter.

Namespace

Drupal\field\Plugin\field\formatter
View source
class LegacyFormatter extends FormatterBase {

  /**
   * Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::settingsForm().
   */
  public function settingsForm(array $form, array &$form_state) {
    $definition = $this
      ->getDefinition();
    $function = $definition['module'] . '_field_formatter_settings_form';

    // hook_field_formatter_settings_form() implementations read display
    // properties directly from $instance. Put the actual properties we use
    // here.
    $instance = clone $this->instance;
    $instance['display'][$this->viewMode] = array(
      'type' => $this
        ->getPluginId(),
      'settings' => $this
        ->getSettings(),
      'weight' => $this->weight,
      'label' => $this->label,
    );
    if (function_exists($function)) {
      return $function($this->field, $instance, $this->viewMode, $form, $form_state);
    }
    return array();
  }

  /**
   * Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::settingsSummary().
   */
  public function settingsSummary() {
    $definition = $this
      ->getDefinition();
    $function = $definition['module'] . '_field_formatter_settings_summary';

    // hook_field_formatter_settings_summary() implementations read display
    // properties directly from $instance. Put the actual properties we use
    // here.
    $instance = clone $this->instance;
    $instance['display'][$this->viewMode] = array(
      'type' => $this
        ->getPluginId(),
      'settings' => $this
        ->getSettings(),
      'weight' => $this->weight,
      'label' => $this->label,
    );
    if (function_exists($function)) {
      return $function($this->field, $instance, $this->viewMode);
    }
  }

  /**
   * Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::prepareView().
   */
  public function prepareView(array $entities, $langcode, array &$items) {
    $definition = $this
      ->getDefinition();
    $function = $definition['module'] . '_field_formatter_prepare_view';
    if (function_exists($function)) {

      // Grab the entity type from the first entity.
      $entity = current($entities);
      $entity_type = $entity
        ->entityType();

      // hook_field_formatter_prepare_view() received an array of display properties,
      // for each entity (the same hook could end up being called for different formatters,
      // since one hook implementation could provide several formatters).
      $display = array(
        'type' => $this
          ->getPluginId(),
        'settings' => $this
          ->getSettings(),
        'weight' => $this->weight,
        'label' => $this->label,
      );
      $displays = array();
      foreach ($entities as $entity) {
        $displays[$entity
          ->id()] = $display;
      }
      $function($entity_type, $entities, $this->field, $this->instance, $langcode, $items, $displays);
    }
  }

  /**
   * Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::viewElements().
   */
  public function viewElements(EntityInterface $entity, $langcode, array $items) {
    $definition = $this
      ->getDefinition();
    $function = $definition['module'] . '_field_formatter_view';
    if (function_exists($function)) {

      // hook_field_formatter_view() received an array of display properties,
      $display = array(
        'type' => $this
          ->getPluginId(),
        'settings' => $this
          ->getSettings(),
        'weight' => $this->weight,
        'label' => $this->label,
      );
      return $function($entity
        ->entityType(), $entity, $this->field, $this->instance, $langcode, $items, $display);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
FormatterBase::$field protected property The field definition.
FormatterBase::$instance protected property The field instance definition.
FormatterBase::$label protected property The label display setting.
FormatterBase::$settings protected property The formatter settings. Overrides PluginSettingsBase::$settings
FormatterBase::$viewMode protected property The view mode.
FormatterBase::$weight protected property The formatter weight.
FormatterBase::view public function Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::view(). Overrides FormatterInterface::view
FormatterBase::__construct public function Constructs a FormatterBase object. Overrides PluginBase::__construct
LegacyFormatter::prepareView public function Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::prepareView(). Overrides FormatterBase::prepareView
LegacyFormatter::settingsForm public function Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::settingsForm(). Overrides FormatterBase::settingsForm
LegacyFormatter::settingsSummary public function Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::settingsSummary(). Overrides FormatterBase::settingsSummary
LegacyFormatter::viewElements public function Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::viewElements(). Overrides FormatterInterface::viewElements
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$discovery protected property The discovery object.
PluginBase::$plugin_id protected property The plugin_id.
PluginBase::getDefinition public function Implements Drupal\Component\Plugin\PluginInterface::getDefinition(). Overrides PluginInspectionInterface::getDefinition
PluginBase::getPluginId public function Implements Drupal\Component\Plugin\PluginInterface::getPluginId(). Overrides PluginInspectionInterface::getPluginId
PluginSettingsBase::$defaultSettingsMerged protected property Whether default settings have been merged into the current $settings.
PluginSettingsBase::getDefaultSettings public function Implements Drupal\field\Plugin\PluginSettingsInterface::getDefaultSettings(). Overrides PluginSettingsInterface::getDefaultSettings
PluginSettingsBase::getSetting public function Implements Drupal\field\Plugin\PluginSettingsInterface::getSetting(). Overrides PluginSettingsInterface::getSetting
PluginSettingsBase::getSettings public function Implements Drupal\field\Plugin\PluginSettingsInterface::getSettings(). Overrides PluginSettingsInterface::getSettings
PluginSettingsBase::mergeDefaults protected function Merges default settings values into $settings.
PluginSettingsBase::setSetting public function Implements Drupal\field\Plugin\PluginSettingsInterface::setSetting(). Overrides PluginSettingsInterface::setSetting
PluginSettingsBase::setSettings public function Implements Drupal\field\Plugin\PluginSettingsInterface::setSettings(). Overrides PluginSettingsInterface::setSettings