merci-8.x-2.x-dev/modules/merci_entity_reference_select/merci_entity_reference_select.module

modules/merci_entity_reference_select/merci_entity_reference_select.module
<?php

/**
 * @file
 * Contains merci_entity_reference_select.module.
 */

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * Alters the artist options on artwork pages.
 */
function merci_entity_reference_select_form_views_exposed_form_alter(&$form, FormStateInterface $form_state, $form_id) {

  $entity_type = 'merci_line_item';
  $bundle = 'merci_reservation';
  
  $field_definitions = \Drupal::entityManager()->getFieldDefinitions($entity_type, $bundle);

  // Change items field from autocomplete to select list.
  $field_name = 'merci_reservation_items_target_id';

  $field_definition = $field_definitions['merci_reservation_items'];
  _merci_entity_reference_select_modify($form, $field_definition, $field_name);

  // Change reserved for field from autocomplete to select list.
  $field_name = 'field_reserved_for_target_id';

  $field_definition = $field_definitions['field_reserved_for'];
  _merci_entity_reference_select_modify($form, $field_definition, $field_name);
}

/*
 * Create select form field for entity reference selection handler.
 */
function _merci_entity_reference_select_modify(&$form, $field_definition, $field_name) {

  // If not the view we are looking, move on
  if (!array_key_exists($field_name, $form)) {
    return FALSE;
  }
  if (!$options = \Drupal::service('plugin.manager.entity_reference_selection')->getSelectionHandler($field_definition)->getReferenceableEntities()) {
    return;
  }

  // Start building out our new form element
  $form[$field_name]['#type'] = 'select';
  $form[$field_name]['#multiple'] = FALSE;

  // Specify the empty option for our select list
  $form[$field_name]['#empty_option'] = t('Select User');

  // Add the $options from above to our select list
  $form[$field_name]['#options'] = reset($options);
  unset($form[$field_name]['#size']);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc