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

Specification: the legacy bridge bundle

This page is the reference for the legacy bridge, the Symfony bundle that runs the Exponential 6 kernel inside a platform request: its layout, the events you can listen to, the settings it maps from the platform into…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/specifications/6.0/legacy-bridge-bundle.md

On this page

Specification: the legacy bridge bundle

This page is the reference for the legacy bridge, the Symfony bundle that runs the Exponential 6 kernel inside a platform request: its layout, the events you can listen to, the settings it maps from the platform into the legacy kernel, its configuration tree and its branches. Read it if you configure or extend a project that runs both kernels. For step-by-step setup, use Legacy bridge: run Exponential 6 inside the Symfony platform.

ItemValue
Packagese7enxweb/legacy-bridge (repository legacyBridge)
Bundle classeZ\Bundle\EzPublishLegacyBundle\EzPublishLegacyBundle
Configuration rootez_publish_legacy

What the bridge does

It boots the Exponential 6 kernel inside a Symfony request, shares the database, the siteaccess, the user and the caches with the platform kernel, and lets each kernel handle the URLs it owns.

Layout of the bundle

PathResponsibility
bundle/DependencyInjection/Configuration tree (ez_publish_legacy), scope handling, service loading from bundle/Resources/config/*.yml
bundle/LegacyMapper/Configuration, LegacyBundles, Security, Session, SiteAccess: map platform state into the legacy kernel's settings before it is built
bundle/Controller/LegacyKernelController (runs a legacy request), LegacyRestController, LegacySetupController (setup wizard), LegacyTreeMenuController, PreviewController, WebsiteToolbarController
bundle/EventListener/ConfigScopeListener, CsrfTokenResponseListener, IndexRequestListener, LegacyKernelListener, RequestListener, RestListener, SetupListener
bundle/Command/the six exponential:legacy:* commands (names)
bundle/Cache/persistence cache purging when the legacy view cache is cleared
bundle/LegacyBundles/, bundle/Composer/installation of legacy extensions that Symfony bundles define; Composer scripts
bundle/FieldType/, bundle/Rest/, bundle/Routing/, bundle/Security/, bundle/SetupWizard/, bundle/Collector/XML text field type support, REST bridging, legacy-aware routing, login handling, setup wizard integration, debug toolbar data collector
mvc/kernel build (Kernel, LegacyEvents, LegacyKernelAware), event classes, image, session, security and signal-slot adapters

Events

Constants of LegacyEvents. A listener may change the legacy settings while the kernel is built:

ConstantEvent nameWhen
PRE_BUILD_LEGACY_KERNEL_WEBezpublish_legacy.build_kernel_web_handlerbefore the web handler is built
PRE_BUILD_LEGACY_KERNELezpublish_legacy.build_kernelbefore the kernel is built; the bridge's Configuration mapper listens here (priority 128)
POST_BUILD_LEGACY_KERNELezpublish_legacy.post_build_kernelafter the kernel is built
PRE_RESET_LEGACY_KERNELezpublish_legacy.pre_reset_legacy_kernelbefore the kernel is reset

Settings mapped from the platform into the legacy kernel

The Configuration mapper (when the bridge is enabled) injects these values as legacy INI overrides before the kernel starts.

Legacy settingSource
site.ini/DatabaseSettings/Server, Port, User, Password, Database, SocketDoctrine connection parameters host, port, user, password, dbname, unix_socket (Socket is disabled when no socket is set)
site.ini/DatabaseSettings/DatabaseImplementationDoctrine driver through the map below
site.ini/DatabaseSettings/Database (SQLite)Doctrine path parameter, since v4.0.0.1
site.ini/FileSettings/VarDir, StorageDirplatform parameters var_dir, storage_dir
site.ini/UserSettings/AnonymousUserIDplatform parameter anonymous_user_id
site.ini/ContentSettings/ViewCachingforced to enabled
site.ini/SiteAccessSettings/PathPrefix, PathPrefixExcludesiteaccess root location and path prefix
site.ini/SiteSettings/IndexPage, DefaultPageconfigured values, else /content/view/full/<root location id>/
image.ini/ImageMagick/*platform ImageMagick options and filters
file.ini/ClusteringSettings/FileHandler and eZDFSClusteringSettings/*DFS clustering parameters when DFS is configured

Driver map (LegacyMapper\Configuration):

Doctrine driverLegacy DatabaseImplementation
pdo_mysqlezmysqli
pdo_pgsqlezpostgresql
oci8ezoracle
pdo_sqlitesqlite3 (added v4.0.0.1, 2026-04-07)

Any other driver raises RuntimeException: "Could not map database driver to Legacy Stack database implementation."

Configuration tree

Root ez_publish_legacy, in a platform configuration file such as config/packages/ezplatform.yaml or app/config/ezplatform.yml:

KeyTypeDefaultScopeMeaning
enabledbooltrueglobalswitch the bridge on or off
clear_all_spi_cache_on_symfony_clear_cachebooltrueglobalcache:clear also clears the persistence cache
clear_all_spi_cache_from_legacybooltrueglobalclearing the legacy content view cache clears the persistence cache
root_dirstringnonegloballegacy root directory; validation fails when the path does not exist
legacy_aware_routeslist of strings[]globalroutes or route prefixes still reachable when legacy_mode is true
templating.view_layoutstringnonesiteaccessTwig pagelayout used when a content view is rendered in legacy
templating.module_layoutstringnonesiteaccessTwig pagelayout for legacy modules
legacy_modeboolnonesiteaccessthe legacy kernel handles URL aliases for the siteaccess

Example for the legacy_admin siteaccess:

ez_publish_legacy:
    clear_all_spi_cache_from_legacy: true
    legacy_aware_routes: [ 'my_legacy_route_' ]
    system:
        legacy_admin:
            legacy_mode: true

Branches and requirements

BranchphpKey requirements (from composer.json)
3.x^8.0se7enxweb/exponential ^6.0.12, se7enxweb/ezpublish-legacy-installer ^2.0.4, ezsystems/ezplatform-kernel ~1.3, se7enxweb/ezplatform-xmltext-fieldtype ^2.0, symfony/framework-bundle ^5.4, se7enxweb/ngsymfonytools ^4.0, se7enxweb/richtext-datatype-bundle 2.0.x-dev
4.x^8.0as 3.x with se7enxweb/exponential dev-main and se7enxweb/ezplatform-xmltext-fieldtype ^4.0
5.x^8.4se7enxweb/exponential dev-main, se7enxweb/ezplatform-xmltext-fieldtype 5.x-dev, se7enxweb/ngsymfonytools v5.0.x-dev, se7enxweb/richtext-datatype-bundle *, se7enxweb/site-bundle 5.0.x-dev, se7enxweb/site-legacy-bundle, a database translator package
  • site-legacy-bundle: glue between the new and the legacy kernel for Netgen style sites (ported to eZ Platform 3.3 service ids in March 2026).
  • ngsymfonytools: legacy extension with a symfony_include template operator to render a Twig template or a Symfony sub-request from a legacy .tpl. The operator fetches the twig service from the container; this works on Symfony 5 and later because the bridge's TwigPass makes the service public (v5.0.9, April 2026). It also carries a class alias from the old repository interface to the Ibexa one.
  • ibexa-legacy-bridge (Platform 4): port of the bridge to the Ibexa 4 APIs, with exponential:legacy:script.

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