You are here

class DisplayFieldCopyForm in Display Field Copy 8

Same name and namespace in other branches
  1. 2.x src/Form/DisplayFieldCopyForm.php \Drupal\display_field_copy\Form\DisplayFieldCopyForm

Configure copy fields.

Hierarchy

Expanded class hierarchy of DisplayFieldCopyForm

1 file declares its use of DisplayFieldCopyForm
DisplayFieldCopy.php in src/Plugin/Derivative/DisplayFieldCopy.php
1 string reference to 'DisplayFieldCopyForm'
display_field_copy.routing.yml in ./display_field_copy.routing.yml
display_field_copy.routing.yml

File

src/Form/DisplayFieldCopyForm.php, line 21

Namespace

Drupal\display_field_copy\Form
View source
class DisplayFieldCopyForm extends FieldFormBase {

  /**
   * The type of the dynamic ds field.
   */
  const TYPE = 'display_field_copy';

  /**
   * Entity Field Manager.
   *
   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
   */
  protected $entityFieldManager;

  /**
   * Entity Type Bundle Info.
   *
   * @var \Drupal\Core\Entity\EntityTypeBundleInfoInterface
   */
  protected $entityTypeBundleInfo;

  /**
   * {@inheritdoc}
   */
  public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager, CacheTagsInvalidatorInterface $cache_invalidator, ModuleHandlerInterface $module_handler, EntityFieldManagerInterface $entity_field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info) {
    parent::__construct($config_factory, $entity_type_manager, $cache_invalidator, $module_handler);
    $this->entityFieldManager = $entity_field_manager;
    $this->entityTypeBundleInfo = $entity_type_bundle_info;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('config.factory'), $container
      ->get('entity_type.manager'), $container
      ->get('cache_tags.invalidator'), $container
      ->get('module_handler'), $container
      ->get('entity_field.manager'), $container
      ->get('entity_type.bundle.info'));
  }

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'ds_field_form';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state, $field_key = '') {
    $form = parent::buildForm($form, $form_state, $field_key);
    $form['entities']['#access'] = FALSE;
    $form['ui_limit']['#access'] = FALSE;
    $options = [];
    foreach ($this->entityTypeManager
      ->getDefinitions() as $entity_type_id => $entity_type) {
      if (!$entity_type instanceof ContentEntityTypeInterface) {
        continue;
      }
      $bundles = $this->entityTypeBundleInfo
        ->getBundleInfo($entity_type_id);
      foreach ($bundles as $bundle_id => $data) {
        $fields = $this->entityFieldManager
          ->getFieldDefinitions($entity_type_id, $bundle_id);
        foreach ($fields as $field_id => $field) {
          if ($field instanceof BaseFieldDefinition) {
            $options[$entity_type_id . '.' . $field_id] = $entity_type
              ->getLabel() . ' - ' . $field
              ->getLabel();
          }
          elseif ($field instanceof FieldConfigInterface) {
            $options[$field
              ->id()] = $entity_type
              ->getLabel() . ' (' . $data['label'] . ') - ' . $field
              ->label();
          }
        }
      }
    }
    $field = $this->field;
    $form['ds_field_identity']['field_id'] = array(
      '#type' => 'select',
      '#options' => $options,
      '#title' => t('Fields'),
      '#required' => TRUE,
      '#default_value' => isset($field['properties']['field_id']) ? $field['properties']['field_id'] : '',
    );
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $field_id = $form_state
      ->getValue('field_id');
    $pieces = explode('.', $field_id);
    $entity_type_id = $pieces[0];
    $entities = $form_state
      ->getValue('entities');
    foreach ($entities as $key => $value) {
      $entities[$key] = 0;
    }
    $entities[$entity_type_id] = $entity_type_id;
    $form_state
      ->setValue('entities', $entities);
    if (count($pieces) == 3) {
      $bundle_id = $pieces[1];
      $form_state
        ->setValue('ui_limit', $bundle_id . '|*');
    }
    return parent::submitForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function getProperties(FormStateInterface $form_state) {
    return array(
      'field_id' => $form_state
        ->getValue('field_id'),
    );
  }

  /**
   * {@inheritdoc}
   */
  public function getType() {
    return self::TYPE;
  }

  /**
   * {@inheritdoc}
   */
  public function getTypeLabel() {
    return 'Copy field';
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DisplayFieldCopyForm::$entityFieldManager protected property Entity Field Manager.
DisplayFieldCopyForm::$entityTypeBundleInfo protected property Entity Type Bundle Info.
DisplayFieldCopyForm::buildForm public function
DisplayFieldCopyForm::create public static function
DisplayFieldCopyForm::getFormId public function
DisplayFieldCopyForm::getProperties public function
DisplayFieldCopyForm::getType public function
DisplayFieldCopyForm::getTypeLabel public function
DisplayFieldCopyForm::submitForm public function
DisplayFieldCopyForm::TYPE constant The type of the dynamic ds field.
DisplayFieldCopyForm::__construct public function