Coming from eZ Platform or Ibexa
This page is for developers who have built sites on eZ Platform or Ibexa DXP or OSS and now work with Exponential. You already know the content model: it is the same one. What changes is the layer above it. This page tells you what carries over unchanged and what to relearn, and it points to the migration chapter for real projects.
Exponential is led by 7x and the Exponential Foundation; it is not associated with eZ Systems or Ibexa.
Contents
- Two Exponential destinations
- What you already know
- What differs on the legacy kernel
- Field types and datatypes
- Configuration: YAML to INI
- Templates: Twig to TPL
- Bundles to extensions
- Where to go next
Two Exponential destinations
Exponential has two lines for someone coming from the Symfony platforms (chapter 16.1):
| Exponential Platform (Nexus and the platform distributions) | Exponential 6 (this kernel), alone or as Exponential Platform Legacy | |
|---|---|---|
| Stack | the Symfony stack you know, with the packages swapped for the se7enxweb forks | the legacy PHP kernel: INI settings, TPL templates, modules and extensions |
| Your Twig and bundles | kept | rewritten as templates and extensions |
| Effort of a move | lowest: same generation, a package swap | highest: presentation and custom code are rewritten, content is kept |
The legacy bridge can also run this kernel inside a Symfony platform installation, so both stacks serve one database during a transition (Legacy bridge). The pages of this section describe Exponential 6, the legacy kernel.
What you already know
The content model of every generation is the legacy kernel's own. Classes (content types), objects (content items), versions, attributes (fields), locations, URL aliases, roles and policies, sections, object states and languages are the same tables with the same meaning (16.6.1). So these pages will feel familiar:
| Ibexa word | Exponential word | Read |
|---|---|---|
| Content type | content class | Content classes and attributes |
| Field definition, field type | class attribute, datatype | Choosing datatypes |
| Content item | content object | The content model |
| Location | node (location) | Objects, nodes and locations |
| Siteaccess | siteaccess (the concept started here) | Siteaccesses and multisite |
| Policies, limitations, sections, object states | the same | Sections, roles and policies |
What differs on the legacy kernel
From 16.6.2, in short:
- Administration. The legacy administration and the Online Editor for XmlText, instead of the Symfony admin UI.
- Rendering. TPL templates with the override system and template fetch functions, instead of Twig, controllers and query types.
- APIs. The legacy REST layer (
ezprestapi, v1 and v2) andezjscoreserver functions, instead of REST v2 and GraphQL of the Symfony stack (The REST API). - Features you gain. Workflow events, information collection, the shop, RSS import and export, newsletters, Exponential Layouts (ported from the upstream layouts packages), Velocity as the web server, and SQLite, MongoDB and Oracle drivers.
Field types and datatypes
Most field types are the legacy datatypes under the same identifier (ezstring, ezimage, ezobjectrelationlist
and so on). The exceptions you will meet:
ezrichtext(DocBook) has no legacy datatype; legacy rich text isezxmltext(Rich text). Chapter 16.6.3 has the element mapping and the two ways to handle stored DocBook.ezimageassetbecomesezobjectrelation;ezcontentquerybecomes a template fetch; landing pages and forms of the commercial editions are rebuilt with Exponential Layouts and information collection.
The full table: 16.6.3 Field types.
Configuration: YAML to INI
Siteaccess YAML (ibexa.system.<scope>) becomes INI files: settings/siteaccess/<name>/site.ini.append.php for a
siteaccess, settings/override/ for global values, and extension/<ext>/settings/ for what your code ships. The
scopes and their order are explained in
Settings and INI for CMS developers; the mapping of keys is in
16.6.5.
Templates: Twig to TPL
Content view configuration (content_view with match rules) becomes override.ini rules with Match[...] keys;
ibexa_render_field becomes attribute_view_gui; query types and controllers become fetch() calls in the template.
Templates and overrides for CMS developers and
16.6.6 Templates: Twig to TPL
take it from there.
Bundles to extensions
A Symfony bundle becomes an extension in extension/<name>: event subscribers become workflow events or event
listeners, controllers become module views, Twig extensions become template operators, commands become console
commands or bin/php scripts, and services become PHP classes registered through autoloads
(Extensions you will write).
Where to go next
- Moving a real site: chapter 16, and for the hosting side Migrating customers from eZ Platform and Ibexa.
- Training: From the Symfony platforms.
- Choosing between the lines: Choosing a path.
Related pages
- Exponential for CMS developers
- Who is 7x?
- Exponential Platform Nexus starter
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
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.