File tree 2 files changed +51
-1
lines changed
src/Plugin/GraphQL/Fields
2 files changed +51
-1
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Drupal \graphql_example \Plugin \GraphQL \Fields ;
4
+
5
+ use Drupal \Component \Utility \UrlHelper ;
6
+ use Drupal \Core \Url ;
7
+ use Youshido \GraphQL \Execution \ResolveInfo ;
8
+ use Drupal \graphql_core \Plugin \GraphQL \Fields \Route ;
9
+
10
+ /**
11
+ * Retrieve a url object based on an internal path or external url.
12
+ *
13
+ * @GraphQLField(
14
+ * id = "example_url_route",
15
+ * name = "route",
16
+ * type = "Url",
17
+ * nullable = true,
18
+ * arguments = {
19
+ * "path" = "String"
20
+ * },
21
+ * weight = 1
22
+ * )
23
+ */
24
+ class ExampleRoute extends Route {
25
+
26
+ /**
27
+ * {@inheritdoc}
28
+ */
29
+ public function resolveValues ($ value , array $ args , ResolveInfo $ info ) {
30
+ if (UrlHelper::isExternal ($ args ['path ' ])) {
31
+ yield Url::fromUri ($ args ['path ' ]);
32
+ }
33
+ else {
34
+ foreach (parent ::resolveValues ($ value , $ args , $ info ) as $ item ) {
35
+ yield $ item ;
36
+ }
37
+ }
38
+ }
39
+
40
+ }
Original file line number Diff line number Diff line change @@ -28,10 +28,20 @@ class PageTitle extends FieldPluginBase {
28
28
*/
29
29
protected function resolveValues ($ value , array $ args , ResolveInfo $ info ) {
30
30
if ($ value instanceof Url) {
31
- if ($ route = \Drupal::service ('router.route_provider ' )->getRouteByName ($ value ->getRouteName ())) {
31
+ if ($ value -> isRouted () && $ route = \Drupal::service ('router.route_provider ' )->getRouteByName ($ value ->getRouteName ())) {
32
32
$ request = Request::create ($ value ->toString ());
33
33
yield \Drupal::service ('title_resolver ' )->getTitle ($ request , $ route );
34
34
}
35
+ else {
36
+ $ content = (string ) \Drupal::httpClient ()
37
+ ->get ($ value ->toString ())
38
+ ->getBody ();
39
+ $ doc = new \DOMDocument ();
40
+ $ doc ->loadHTML ($ content );
41
+ $ xpath = new \DOMXPath ($ doc );
42
+ $ title = $ xpath ->query ('//title ' )->item (0 )->textContent ;
43
+ yield (string ) $ title ;
44
+ }
35
45
}
36
46
}
37
47
You can’t perform that action at this time.
0 commit comments