Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Search API HTML Element Filter 1.0.7 Minor update available for module search_api_html_element_filter (1.0.7). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). Varbase Media Header 9.2.1 Minor update available for module varbase_media_header (9.2.1). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

This module provides a GraphQL field that allows you to retrieve an entity by passing its serialized form as an argument. This is useful for rendering previews of unsaved content, such as paragraphs, within a backend theme using GraphQL and Twig.

Overview

This module contains a GraphQL Field entityByObject where you can pass an serialized entity as an argument and you get the unserialized entity in return.

Use case

We use this field to be able to render paragraphs in the backend preview with graphql_twig with the same styling as in the frontend theme. It is not possible to display the preview of unsaved paragraph since it is not possible to query an unsaved entity with GraphQL (at least we found no possibility), this is the reason why we created this field.
Since it is not possible to pass an object as an argument, it is necessary that the entity will be passed serialized.

Usage

If you want to render paragraph in the backend preview with graphql_twig you need to extend your backend theme preprocess function and pass the serialized paragraph in the $variables['serializedObject'] argument.

function THEME_preprocess_paragraph(&$variables) {
  $variables['serializedObject'] = serialize($variables['paragraph']);
}

Now you should be able to use entityByObject to query paragraphs in your paragraph.html.twig template.

{#graphql
query ($serializedObject: String) {
  paragraph: entityByObject(serializedObject: $serializedObject) {
    ... on Paragraph {
      type: entityBundle
      ...Lead
      ...Text
    }
  }
}

fragment Lead on ParagraphLead {
  fieldTitle
  fieldLead
}

fragment Text on ParagraphText {
  fieldText {
    processed
  }
}
#}


{% set paragraph = graphql.paragraph %}

{% block paragraph %}
  {% block content %}
    {% include '@FRONTEND_THEME/modules/m-' ~ paragraph.type ~ '.html.twig' with {'data': paragraph} %}
  {%  endblock %}
{% endblock paragraph %}

Activity

Total releases
1
First release
Jul 2025
Latest release
11 months ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Slowing

Releases

Version Type Release date
8.x-1.0-alpha3 Pre-release Jul 23, 2025