Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Layouts on the platform: the layouts-core fork

This page is for developers of Nexus and DXP projects on the Symfony based platform who use Exponential Layouts on PHP 8.4 or 8.5. The se7enxweb fork of the Layouts core makes block templates that read parameters work…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/features/6.0/platform-layouts-core-fork.md

On this page

Layouts on the platform: the layouts-core fork

This page is for developers of Nexus and DXP projects on the Symfony based platform who use Exponential Layouts on PHP 8.4 or 8.5. The se7enxweb fork of the Layouts core makes block templates that read parameters work on those PHP versions.

Repositoryse7enxweb/layouts-core (fork of the upstream layouts core, netgen/layouts-core)
Newest tag2.0.0-se7enx.1 (2026-04-19)
Upstream releases in the history1.4.10 (2024-09-06), 1.4.11, 1.4.12, 1.4.13 (2025-12-17), 2.0.0 (2026-02-25)
Historylayouts-core: 450 changes, one of them by the se7enxweb team
Counterpart in Exponential 6the extensions explayouts, explayouts_ui, explayouts_ui_api; see Exponential Layouts

What it is

Layouts is the page builder of the platform side of the family. Editors compose a page from zones and blocks in a visual editor, and rules decide which layout applies to which request. The core package holds the model (layouts, zones, blocks, collections, rules, targets, conditions), the parameter system, the block definitions and the rendering. Nexus sites (see Nexus starter) are built on it through the layouts 2.0.x packages: Ibexa integration, Site API integration, the standard blocks, the layouts admin at /nglayouts/admin and the editor app at /nglayouts/app.

The concept is the same as in Exponential Layouts, which was ported to the legacy kernel: layout types with named zones, blocks with parameters, collections of items, and rules with targets that pick the layout of a page. If you know one, you know the other.

Use it

You do not install it by hand in a Nexus or DXP project: the metapackage requires it. In your own project:

composer require se7enxweb/layouts-core
composer why netgen/layouts-core     # shows se7enxweb/layouts-core as the provider

Block templates read parameters as usual. This line is from the Nexus starter's gallery block template (templates/nglayouts/themes/app/block/gallery/sushi_bar.html.twig); it is the kind of access that fails on PHP 8.4 without the fork:

{% if block.parameter('infinite_loop').value %}data-loop="true"{% endif %}

What the fork changes

Version 2.0 of the core uses PHP 8.4 language features throughout. One of them breaks template access:

  • PHP 8.4 added asymmetric visibility (private(set)). Twig reads an object's attribute by checking ReflectionProperty::isInitialized() before it looks for a getter method. For properties declared with private(set) that check fails, Twig never reaches the getter, and a page that reads a parameter in a block template stops with "Call to undefined method".
  • The fork (commit 3ec0262b2, 2026-04-19) adds explicit getter methods to Netgen\Layouts\Parameters\Parameter: getName(), getParameterDefinition(), getValue(), isEmpty() and getValueObject(), so Twig resolves them by ordinary method lookup. The same commit renames the package to se7enxweb/layouts-core and adds replace: netgen/layouts-core.

Because of the replace declaration, every layouts package that requires netgen/layouts-core is satisfied by the fork. The metapackage se7enxweb/exponential-platform-dxp requires the fork directly (commit "require se7enxweb/layouts-core fork for PHP 8.4 private(set) Twig compatibility", 2026-04-19). Tag 2.0.0-se7enx.1 marks the fork on top of upstream 2.0.0.

What upstream changed in 2.0 (carried history)

Between October 2025 and February 2026: constructor property promotion and missing typehints (2025-10-28), deprecations removed across Symfony and Doctrine (2025-11-10), PHPUnit annotations replaced by attributes (2025-11-11), core API values moved to property hooks (2025-11-26), view system and config values on property hooks (2025-11-27/28), UUIDs switched to the Symfony Uid component (2025-12-13), and Uuid v7 in tests (2025-12-31). Projects that extend layout classes should read the upstream upgrade notes for 2.0 before moving from 1.4.

Limits

  • The fork needs PHP 8.4 (^8.4).
  • Layouts 1.4 on PHP below 8.4 does not need the fork.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x