address_suggestion-1.0.3/src/QueryService.php

src/QueryService.php
<?php

namespace Drupal\address_suggestion;

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\State\State;

/**
 * Service Class to query.
 *
 * @package Drupal\mymodule\Services
 */
class QueryService {

  /**
   * {@inheritDoc}
   */
  protected $providerManager;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The state service.
   *
   * @var \Drupal\Core\State\State
   */
  protected $state;

  /**
   * {@inheritDoc}
   */
  public function __construct(AddressProviderManager $provider_manager, EntityTypeManagerInterface $entity_type_manager, State $state) {
    $this->providerManager = $provider_manager;
    $this->entityTypeManager = $entity_type_manager;
    $this->state = $state;
  }

  /**
   * {@inheritDoc}
   */
  public function getData($entity_type, $bundle, $field_name, $query) {
    $form_mode = 'default';
    $form_display = $this->entityTypeManager->getStorage('entity_form_display')
      ->load($entity_type . '.' . $bundle . '.' . $form_mode)
      ->getComponent($field_name);
    $settings = $form_display['settings'] ?? [];
    $country = $this->state->get(
      $stateField = implode('|', [$entity_type, $bundle, $field_name])
    );
    if (!empty($country)) {
      $settings['country'] = $country;
      $settings['countryName'] = $this->state->get($stateField . '|Country');
    }
    return $this->getProviderResults($query, $settings);
  }

  /**
   * Get Provider Results.
   *
   * @inheritDoc
   */
  public function getProviderResults($string, $settings = []) {
    $plugin_id = $settings['provider'];
    $plugin = $this->providerManager->createInstance($plugin_id);
    return $plugin->processQuery($string, $settings);
  }

}

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

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