knowledge-8.x-1.x-dev/src/Plugin/views/field/KnowledgeedEntity.php

src/Plugin/views/field/KnowledgeedEntity.php
<?php

namespace Drupal\knowledge\Plugin\views\field;

use Drupal\views\Plugin\views\field\EntityField;
use Drupal\views\ResultRow;

/**
 * Views field display for linked entity.
 *
 * @ViewsField("linked_entity")
 */
class KnowledgeedEntity extends EntityField {

  /**
   * Array of entities that has knowledge.
   *
   * We use this to load all the linked entities of same entity type at once
   * to the EntityStorageController static cache.
   *
   * @var array
   */
  protected $loadedKnowledgeedEntities = [];

  /**
   * {@inheritdoc}
   */
  public function getItems(ResultRow $values) {
    if (empty($this->loadedKnowledgeedEntities)) {
      $result = $this->view->result;

      $entity_ids_per_type = [];
      foreach ($result as $value) {
        /** @var \Drupal\knowledge\KnowledgeInterface $knowledge */
        $knowledge = $this->getEntity($value);
        if ($knowledge) {
          $entity_ids_per_type[$knowledge->getKnowledgeedEntityTypeId()][] = $knowledge->getKnowledgeedEntityId();
        }
      }

      foreach ($entity_ids_per_type as $type => $ids) {
        $this->loadedKnowledgeedEntities[$type] = $this->entityTypeManager->getStorage($type)->loadMultiple($ids);
      }
    }

    return parent::getItems($values);
  }

}

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

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