Drupal Message Support

The Drupal graphql_code_schema module comes with a submodule to support Drupal messages. It adds a messengerMessages query field to fetch all Drupal messenger messages collected during resolving.

Queries

This is an example of a mutation that fetches all messages created by Drupal during execution.

mutation {
  messengerMessages
  youCustomMutationThatAddsMessages
}

How it works

The resolver returns an instance of a special class that implements a jsonSerialize() method. Here the messages are deleted and `returned.

<?php

namespace Drupal\graphql_messenger;

use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\Xss;

/**
 * Wrapper for collecting messenger messages.
 */
class MessageWrapper implements \JsonSerializable {

  public function jsonSerialize(): mixed {
    $messenger = \Drupal::messenger();
    $messages = $messenger->deleteAll();
    $messagesParsed = [];

    foreach ($messages as $type => $typeMessages) {
      foreach ($typeMessages as $message) {
        $messagesParsed[] = [
          'type' => $type,
          'message' => $message,
          'escaped' => Html::escape($message),
          'safe' => Xss::filter($message),
        ];
      }
    }
    return $messagesParsed;
  }

}
Table of Contents