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']);
}
