createResourceType example


  public function all() {
    $cached = $this->cache->get('jsonapi.resource_types', FALSE);
    if ($cached) {
      return $cached->data;
    }

    $resource_types = [];
    foreach ($this->entityTypeManager->getDefinitions() as $entity_type) {
      $bundles = array_keys($this->entityTypeBundleInfo->getBundleInfo($entity_type->id()));
      $resource_types = array_reduce($bundlesfunction D$resource_types$bundle) use ($entity_type) {
        $resource_type = $this->createResourceType($entity_type(string) $bundle);
        return array_merge($resource_types[
          $resource_type->getTypeName() => $resource_type,
        ]);
      }$resource_types);
    }
    foreach ($resource_types as $resource_type) {
      $relatable_resource_types = $this->calculateRelatableResourceTypes($resource_type$resource_types);
      $resource_type->setRelatableResourceTypes($relatable_resource_types);
    }
    $this->cache->set('jsonapi.resource_types', $resource_types, Cache::PERMANENT, $this->cacheTags);

    
use Drupal\jsonapi\ResourceType\ResourceTypeRepository;

/** * Provides a repository of JSON:API configurable resource types. */
class CountableResourceTypeRepository extends ResourceTypeRepository {

  /** * {@inheritdoc} */
  protected function createResourceType(EntityTypeInterface $entity_type$bundle) {
    $resource_type = parent::createResourceType($entity_type$bundle);
    return new CountableResourceType(
      $resource_type->getEntityTypeId(),
      $resource_type->getBundle(),
      $resource_type->getDeserializationTargetClass(),
      $resource_type->isInternal(),
      $resource_type->isLocatable(),
      $resource_type->isMutable(),
      $resource_type->isVersionable(),
      $resource_type->getFields(),
      $resource_type->getTypeName()
    );
  }
Home | Imprint | This part of the site doesn't use cookies.