jfu-1.0.x-dev/src/Plugin/rest/resource/BlockListResource.php

src/Plugin/rest/resource/BlockListResource.php
<?php

namespace Drupal\jfu\Plugin\rest\resource;

use Drupal\rest\Plugin\ResourceBase;
use Drupal\rest\ResourceResponse;
use Drupal\Core\Cache\CacheableMetadata;

/**
  * Provides a Block list resource
  *
  * @RestResource (
  *   id = "block_list_resource",
  *   label = @Translation("Block List Resource"),
  *   uri_paths = {
  *     "canonical" = "/jfu_rest_api/block_list_resource"
  *   }
  * )
 **/

class BlockListResource extends ResourceBase {
  /**
   * Responds to entity GET requests.
   * @return \Drupal\rest\ResourceResponse
   */

  public function get() {
    $definitions_array = [];
    $bcid = '';
    $entity_type_manager = \Drupal::service('entity_type.manager');
    $blockManager = \Drupal::service('plugin.manager.block');
    $contextRepository = \Drupal::service('context.repository');
    $definitions = $blockManager->getDefinitionsForContexts(
        $contextRepository->getAvailableContexts()
    );

    if (!empty($definitions)) {
      foreach ($definitions as $key => $value) {
        $definitions_array[$key]['admin_label'] = $value['admin_label'];
      }
    }

    //Add cache tags.
    $cache_metadata = new CacheableMetadata();
    $cache_metadata->addCacheTags(['block_content_list']);

    //Attach the cache metadata to the response.
    $response = new ResourceResponse($definitions_array);
    $response->addCacheableDependency($cache_metadata);

    return $response;
  }
}

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

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