public function FormatterPluginManager::getInstance

Overrides PluginManagerBase::getInstance().

Overrides PluginManagerBase::getInstance

File

drupal/core/modules/field/lib/Drupal/field/Plugin/Type/Formatter/FormatterPluginManager.php, line 46
Definition of Drupal\field\Plugin\Type\Formatter\FormatterPluginManager..

Class

FormatterPluginManager
Plugin type manager for field formatters.

Namespace

Drupal\field\Plugin\Type\Formatter

Code

public function getInstance(array $options) {
  $instance = $options['instance'];
  $type = $options['type'];
  $definition = $this
    ->getDefinition($type);
  $field = field_info_field($instance['field_name']);

  // Switch back to default formatter if either:
  // - $type_info doesn't exist (the widget type is unknown),
  // - the field type is not allowed for the widget.
  if (!isset($definition['class']) || !in_array($field['type'], $definition['field_types'])) {

    // Grab the default widget for the field type.
    $field_type_definition = field_info_field_types($field['type']);
    $type = $field_type_definition['default_formatter'];
  }
  $configuration = array(
    'instance' => $instance,
    'settings' => $options['settings'],
    'weight' => $options['weight'],
    'label' => $options['label'],
    'view_mode' => $options['view_mode'],
  );
  return $this
    ->createInstance($type, $configuration);
}