You are here

class EntityAutocomplete in Open Social 8

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  2. 8.2 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  3. 8.3 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  4. 8.4 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  5. 8.5 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  6. 8.6 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  7. 8.7 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  8. 8.8 modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  9. 10.3.x modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  10. 10.0.x modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  11. 10.1.x modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete
  12. 10.2.x modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php \Drupal\social_core\Entity\Element\EntityAutocomplete

Provides an entity autocomplete form element.

The #default_value accepted by this element is either an entity object or an array of entity objects.

Plugin annotation

@FormElement("entity_autocomplete");

Hierarchy

Expanded class hierarchy of EntityAutocomplete

File

modules/social_features/social_core/src/Entity/Element/EntityAutocomplete.php, line 18

Namespace

Drupal\social_core\Entity\Element
View source
class EntityAutocomplete extends EntityAutocompleteBase {

  /**
   * {@inheritdoc}
   */
  public static function getEntityLabels(array $entities, $hide_id = FALSE) {
    $entity_labels = [];
    foreach ($entities as $entity) {

      // Use the special view label, since some entities allow the label to be
      // viewed, even if the entity is not allowed to be viewed.
      $label = $entity
        ->access('view label') ? $entity
        ->label() : t('- Restricted access -');

      // Take into account "autocreated" entities.
      if (!$entity
        ->isNew() && !$hide_id) {
        $label .= ' (' . $entity
          ->id() . ')';
      }

      // Labels containing commas or quotes must be wrapped in quotes.
      $entity_labels[] = Tags::encode($label);
    }
    return implode(', ', $entity_labels);
  }

  /**
   * {@inheritdoc}
   */
  public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
    $hide_id = !empty($element['#selection_settings']['hide_id']);

    // Process the #default_value property.
    if ($input === FALSE && isset($element['#default_value']) && $element['#process_default_value']) {
      if (is_array($element['#default_value']) && $element['#tags'] !== TRUE) {
        throw new \InvalidArgumentException('The #default_value property is an array but the form element does not allow multiple values.');
      }
      elseif (!empty($element['#default_value']) && !is_array($element['#default_value'])) {

        // Convert the default value into an array for easier processing in
        // static::getEntityLabels().
        $element['#default_value'] = [
          $element['#default_value'],
        ];
      }
      if ($element['#default_value']) {
        if (!reset($element['#default_value']) instanceof EntityInterface) {
          throw new \InvalidArgumentException('The #default_value property has to be an entity object or an array of entity objects.');
        }

        // Extract the labels from the passed-in entity objects, taking access
        // checks into account.
        return static::getEntityLabels($element['#default_value'], $hide_id);
      }
    }

    // Potentially the #value is set directly, so it contains the 'target_id'
    // array structure instead of a string.
    if ($input !== FALSE && is_array($input)) {
      $entity_ids = array_map(function (array $item) {
        return $item['target_id'];
      }, $input);
      $entities = \Drupal::entityTypeManager()
        ->getStorage($element['#target_type'])
        ->loadMultiple($entity_ids);
      return static::getEntityLabels($entities, $hide_id);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
EntityAutocomplete::extractEntityIdFromAutocompleteInput public static function Extracts the entity ID from the autocompletion result.
EntityAutocomplete::getEntityLabels public static function Converts an array of entity objects into a string of entity labels. Overrides EntityAutocomplete::getEntityLabels
EntityAutocomplete::getInfo public function Returns the element properties for this element. Overrides Textfield::getInfo
EntityAutocomplete::matchEntityByTitle protected static function Finds an entity from an autocomplete input without an explicit ID.
EntityAutocomplete::processEntityAutocomplete public static function Adds entity autocomplete functionality to a form element.
EntityAutocomplete::validateEntityAutocomplete public static function Form element validation handler for entity_autocomplete elements.
EntityAutocomplete::valueCallback public static function Determines how user input is mapped to an element's #value property. Overrides EntityAutocomplete::valueCallback
FormElement::processAutocomplete public static function Adds autocomplete functionality to elements.
FormElement::processPattern public static function #process callback for #pattern form element property.
FormElement::validatePattern public static function #element_validate callback for #pattern form element property.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
RenderElement::preRenderAjaxForm public static function Adds Ajax information about an element to communicate with JavaScript.
RenderElement::preRenderGroup public static function Adds members of this group as actual elements for rendering.
RenderElement::processAjaxForm public static function Form element processing handler for the #ajax form property. 1
RenderElement::processGroup public static function Arranges elements into groups.
RenderElement::setAttributes public static function Sets a form element's class attribute. Overrides ElementInterface::setAttributes
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
Textfield::preRenderTextfield public static function Prepares a #type 'textfield' render element for input.html.twig.