Drupal GraphQL logi c для Resolver для поля с несколькими значениями - PullRequest
0 голосов
/ 30 мая 2020

Мой первый безголовый проект Drupal с GraphQL, и я борюсь с c логами, стоящими за преобразователями.

Существует тип содержимого «проект» с полем «field_project_description». Поле может хранить несколько значений.

Это часть моей схемы:

type Project {
  id: Int!
  project_title: String!
  project_description: [ProjectDescription]
}

type ProjectDescription {
  value: String
}

А так выглядит одна часть соответствующего преобразователя:

    $registry->addFieldResolver('ProjectDescription', 'value',
      $builder->produce('property_path')
        ->map('type', $builder->fromValue('entity:node'))
        ->map('value', $builder->fromParent())
        ->map('path', $builder->fromValue('field_project_project_desc.value'))
    );

Но, насколько я понимаю, должен быть другой преобразователь, например

$registry->addFieldResolver('Project', 'project_description',

И я не могу понять, как этот преобразователь должен выглядеть.

1 Ответ

0 голосов
/ 05 июня 2020

Ладно, я сам решил проблему. Ответ на самом деле очень прост.

Второй преобразователь вам не нужен. Достаточно одного преобразователя с дополнительной функцией PHP, которая сводит массивы к строкам. Вот как выглядит код сейчас.

Схема:

type Project {
  id: Int!
  project_title: String!
  project_description: [String]
}

И преобразователь:

$registry->addFieldResolver('Project', 'project_description',
  $builder->compose(
    $builder->produce('property_path')
      ->map('type', $builder->fromValue('entity:node'))
      ->map('value', $builder->fromParent())
      ->map('path', $builder->fromValue('field_project_project_desc')),
    $builder->callback(function ($entity) {
      $list = [];
      foreach($entity as $item){
        array_push($list, $item['value']);
      }
      return $list;
    })
  )
);

Я надеюсь, что смогу помочь кому-нибудь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...