Problem/Motivation

I've got a view with a taxonomy vocabulary "tags" filter. The field's "selection type" is set to "Autocomplete" (and not "Dropdown").

The GraphQL's execute arguments schema allows a list of strings for the tags field, so that the following query is deemed valid according to the schema:

  logos: entityById(entityType:VIEW, id:"logomap_filter") {
    ... on View {
      executable(displayId:"graphql4") {
        ... on ViewLogomapFilterGraphql4 {
          execute(            
            tags: ["780"]
          ) {
            total_rows

When executing that, Drupal returns a "Internal server error".

The exception I see via /admin/reports/dblog is:

TypeError: Drupal\Core\Entity\Element\EntityAutocomplete::Drupal\Core\Entity\Element\{closure}(): Argument #1 ($item) must be of type array, string given in Drupal\Core\Entity\Element\EntityAutocomplete::Drupal\Core\Entity\Element\{closure}() (line 126 of /var/www/drupal/docroot/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php)

EntityAutocomplete::valueCallback wants to have an array with elements that each have a "target_id" key.
This is different from the dropdown.

Steps to reproduce

  1. Create view with a filter for taxonomy term tags
  2. Configure the field to be of selection type "Autocomplete"
  3. Configure the field to allow multi-selection
  4. Expose the view in the GraphQL server
  5. Send a GraphQL query filtering for the tags

View schema

{
    "kind": "OBJECT",
    "name": "ViewLogomapFilterGraphql4",
    "description": null,
    "fields": [
        {
            "name": "execute",
            "description": null,
            "args": [
                {
                    "name": "tags",
                    "description": null,
                    "type": {
                        "kind": "LIST",
                        "name": null,
                        "ofType": {
                            "kind": "SCALAR",
                            "name": "String",
                            "ofType": null
                        }
                    },
                    "defaultValue": null
                },

Stracktrace

For error #0: TypeError: Drupal\Core\Entity\Element\EntityAutocomplete::Drupal\Core\Entity\Element\{closure}(): Argument #1 ($item) must be of type array, string given in Drupal\Core\Entity\Element\EntityAutocomplete::Drupal\Core\Entity\Element\{closure}() (line 126 of /var/www/drupal/docroot/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php)

#0 [internal function]: Drupal\Core\Entity\Element\EntityAutocomplete::Drupal\Core\Entity\Element\{closure}()
#1 /var/www/drupal/docroot/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php(126): array_map()
#2 [internal function]: Drupal\Core\Entity\Element\EntityAutocomplete::valueCallback()
#3 /var/www/drupal/docroot/core/lib/Drupal/Core/Form/FormBuilder.php(1268): call_user_func_array()
#4 /var/www/drupal/docroot/core/lib/Drupal/Core/Form/FormBuilder.php(1005): Drupal\Core\Form\FormBuilder->handleInputElement()
#5 /var/www/drupal/docroot/modules/contrib/autosave_form/src/Form/AutosaveFormBuilder.php(154): Drupal\Core\Form\FormBuilder->doBuildForm()
#6 /var/www/drupal/docroot/core/lib/Drupal/Core/Form/FormBuilder.php(1075): Drupal\autosave_form\Form\AutosaveFormBuilder->doBuildForm()
#7 /var/www/drupal/docroot/modules/contrib/autosave_form/src/Form/AutosaveFormBuilder.php(154): Drupal\Core\Form\FormBuilder->doBuildForm()
#8 /var/www/drupal/docroot/core/lib/Drupal/Core/Form/FormBuilder.php(579): Drupal\autosave_form\Form\AutosaveFormBuilder->doBuildForm()
#9 /var/www/drupal/docroot/modules/contrib/autosave_form/src/Form/AutosaveFormBuilder.php(144): Drupal\Core\Form\FormBuilder->processForm()
#10 /var/www/drupal/docroot/core/lib/Drupal/Core/Form/FormBuilder.php(325): Drupal\autosave_form\Form\AutosaveFormBuilder->processForm()
#11 /var/www/drupal/docroot/modules/contrib/autosave_form/src/Form/AutosaveFormBuilder.php(97): Drupal\Core\Form\FormBuilder->buildForm()
#12 /var/www/drupal/docroot/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php(134): Drupal\autosave_form\Form\AutosaveFormBuilder->buildForm()
#13 /var/www/drupal/docroot/core/modules/views/src/ViewExecutable.php(1243): Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase->renderExposedForm()
#14 /var/www/drupal/docroot/core/modules/views/src/ViewExecutable.php(1396): Drupal\views\ViewExecutable->build()
#15 /var/www/drupal/docroot/modules/contrib/graphql_core_schema/src/Plugin/GraphQL/DataProducer/ViewExecutor.php(228): Drupal\views\ViewExecutable->execute()
#16 /var/www/drupal/docroot/modules/contrib/graphql_core_schema/src/GraphQL/Buffers/SubRequestBuffer.php(107): Drupal\graphql_core_schema\Plugin\GraphQL\DataProducer\ViewExecutor->Drupal\graphql_core_schema\Plugin\GraphQL\DataProducer\{closure}()
#17 [internal function]: Drupal\graphql_core_schema\GraphQL\Buffers\SubRequestBuffer->Drupal\graphql_core_schema\GraphQL\Buffers\{closure}()
#18 /var/www/drupal/docroot/modules/contrib/graphql_core_schema/src/GraphQL/Buffers/SubRequestBuffer.php(106): array_map()
#19 /var/www/drupal/docroot/modules/contrib/graphql_core_schema/src/EventSubscriber/CoreSchemaSubrequestSubscriber.php(63): Drupal\graphql_core_schema\GraphQL\Buffers\SubRequestBuffer->Drupal\graphql_core_schema\GraphQL\Buffers\{closure}()
#20 /var/www/drupal/docroot/core/lib/Drupal/Core/Render/Renderer.php(580): Drupal\graphql_core_schema\EventSubscriber\CoreSchemaSubrequestSubscriber->Drupal\graphql_core_schema\EventSubscriber\{closure}()
#21 /var/www/drupal/docroot/modules/contrib/graphql_core_schema/src/EventSubscriber/CoreSchemaSubrequestSubscriber.php(64): Drupal\Core\Render\Renderer->executeInRenderContext()
#22 [internal function]: Drupal\graphql_core_schema\EventSubscriber\CoreSchemaSubrequestSubscriber->onKernelResponse()

Workaround

Change the view filter field's "selection type" from "Autocomplete" to "Dropdown".

Comments

cweiske created an issue.