views_autocomplete_api-8.x-1.x-dev/src/ParamConverter/ViewsConverter.php

src/ParamConverter/ViewsConverter.php
<?php

namespace Drupal\views_autocomplete_api\ParamConverter;

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\Routing\Route;
use Drupal\Core\ParamConverter\ParamConverterInterface;

/**
 * Class ViewsConverter, load views by name.
 *
 * @package Drupal\views_autocomplete_api\ParamConverter
 */
class ViewsConverter implements ParamConverterInterface {

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

  /**
   * {@inheritDoc}
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager) {
    $this->entityTypeManager = $entity_type_manager;
  }

  /**
   * {@inheritDoc}
   */
  public function convert($value, $definition, $name, array $defaults) {
    $views_name = explode(',', $value);

    if (!empty($views_name)) {
      // Merge with empty value.
      $views_name_empty = array_fill_keys($views_name, '');
      return array_merge(
        $views_name_empty,
        $this->entityTypeManager->getStorage('view')
          ->loadMultiple($views_name)
      );
    }
    return [];
  }

  /**
   * {@inheritDoc}
   */
  public function applies($definition, $name, Route $route) {
    return !empty($definition['type']) && $definition['type'] === 'views-autocomplete-api-views';
  }

}

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

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