From 49b7e96ac3cf4dabd46fdf302e09197b99fbb6dd Mon Sep 17 00:00:00 2001 From: Andreas Krokowski Date: Mon, 21 Mar 2022 11:25:00 +0100 Subject: [PATCH 1/2] #1270 - Adds support for views --- .../GraphQL/DataProducer/Routing/RouteEntity.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php b/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php index 10ea4e607..c259e8719 100644 --- a/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php +++ b/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php @@ -107,9 +107,19 @@ public function __construct( */ public function resolve($url, ?string $language, FieldContext $context): ?Deferred { if ($url instanceof Url) { - [, $type] = explode('.', $url->getRouteName()); - $parameters = $url->getRouteParameters(); - $id = $parameters[$type]; + [$baseType, $type] = explode('.', $url->getRouteName()); + + if ($baseType === 'entity') { + $parameters = $url->getRouteParameters(); + $id = $parameters[$type]; + } else if ($baseType === 'view') { + // View routeNames have format 'view.VIEW_ID.PAGE_ID' + $id = $type; + $type = 'view'; + } else { + return NULL; + } + $resolver = $this->entityBuffer->add($type, $id); return new Deferred(function () use ($type, $resolver, $context, $language) { From a617c572f1a25a001853cefa6e005c22114e2200 Mon Sep 17 00:00:00 2001 From: Andreas Krokowski Date: Mon, 21 Mar 2022 11:30:55 +0100 Subject: [PATCH 2/2] Fixes for PHPCS --- src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php b/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php index c259e8719..a2cd8ffed 100644 --- a/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php +++ b/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php @@ -112,11 +112,13 @@ public function resolve($url, ?string $language, FieldContext $context): ?Deferr if ($baseType === 'entity') { $parameters = $url->getRouteParameters(); $id = $parameters[$type]; - } else if ($baseType === 'view') { - // View routeNames have format 'view.VIEW_ID.PAGE_ID' + } + elseif ($baseType === 'view') { + // View routeNames have format 'view.VIEW_ID.PAGE_ID'. $id = $type; $type = 'view'; - } else { + } + else { return NULL; }