graphql_core_schema-1.0.x-dev/src/Plugin/GraphQL/SchemaExtension/LocalTasksExtension.php

src/Plugin/GraphQL/SchemaExtension/LocalTasksExtension.php
<?php

namespace Drupal\graphql_core_schema\Plugin\GraphQL\SchemaExtension;

use Drupal\graphql\GraphQL\ResolverBuilder;
use Drupal\graphql\GraphQL\ResolverRegistryInterface;
use Drupal\graphql\Plugin\GraphQL\SchemaExtension\SdlSchemaExtensionPluginBase;
use Drupal\graphql_core_schema\CoreSchemaExtensionInterface;

/**
 * The local task schema extension.
 *
 * @SchemaExtension(
 *   id = "local_tasks",
 *   name = "Local Tasks",
 *   description = "An extension that provides local tasks.",
 *   schema = "core_composable"
 * )
 */
class LocalTasksExtension extends SdlSchemaExtensionPluginBase implements CoreSchemaExtensionInterface {

  /**
   * {@inheritdoc}
   */
  public function getEntityTypeDependencies() {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function getExtensionDependencies() {
    return ['routing'];
  }

  /**
   * {@inheritdoc}
   */
  public function registerResolvers(ResolverRegistryInterface $registry): void {
    $builder = new ResolverBuilder();

    $registry->addFieldResolver('InternalUrl', 'localTasks',
      $builder->produce('local_tasks')
        ->map('url', $builder->fromParent())
    );

    $registry->addFieldResolver('LocalTask', 'baseId',
      $builder->callback(function ($value) {
        return $value['_key'];
      })
    );

    $registry->addFieldResolver('LocalTask', 'active',
      $builder->callback(function ($value) {
        return $value['#active'] ?? FALSE;
      })
    );

    $registry->addFieldResolver('LocalTask', 'title',
      $builder->callback(function ($value) {
        return $value['#link']['title'] ?? '';
      })
    );

    $registry->addFieldResolver('LocalTask', 'weight',
      $builder->callback(function ($value) {
        return $value['#weight'] ?? 0;
      })
    );

    $registry->addFieldResolver('LocalTask', 'url',
      $builder->callback(function ($value) {
        return $value['#link']['url'] ?? NULL;
      })
    );
  }

}

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

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