Coming from Laravel
This page is for developers who build with Laravel. Laravel gives you a toolkit and you build the CMS; Exponential gives you a CMS with an application framework underneath. Much of what you would code (admin screens, revisions, translations, permissions, slugs) is already there; some Laravel conveniences have no counterpart.
Contents
Side by side
| Laravel | Exponential 6 | Page |
|---|---|---|
routes/web.php | module.php views; URL aliases for content | Routing |
| Controllers | module views | Controllers |
| Blade | the template language | The view layer |
| Eloquent models | content classes for editorial data; eZPersistentObject for your tables | The content model, ORM |
| Migrations, seeders | .dba schema files, upgrade scripts, packages | Migrations |
| Middleware | request rules, input and output listeners | Middleware |
@csrf | added automatically for signed-in users by ezformtoken | Forms and CSRF |
| Form requests, validation rules | checks in the view or a validator class; datatypes for content | Validation |
| Gates and policies | functions in module.php, roles and policies as data | Authorization |
| Events, observers | ezpEvent, workflows on content operations | Events, Workflows |
| Queues, Horizon | expqueue, Setup > Job queue | Queues |
| Scheduler | cronjob parts | Scheduled tasks |
| Artisan | bin/php/console | Command line |
.env, config/*.php | EXP_ENV, INI files | Configuration, Environments |
Cache::remember() | processCache(), {cache-block}, the view cache | Caching |
__(), lang/ | ezpI18n::tr(), the i18n operator, .ts files | Translations |
| Octane | Velocity's persistent workers | Servers and deployment |
| Sanctum, Passport | personal API keys, OAuth2 | REST and JSON APIs |
What you get without code
- An administration for every content class, with drafts, versions, history and compare.
- Translations of content and per-language URL aliases.
- Roles and policies administrators edit, limited by section, class, subtree, language or state.
- Multisite and multilingual siteaccesses on one database.
- A shop, workflows with approval, search, image variations, a page builder (Exponential Layouts) and a REST API (What Exponential is).
What you will miss
- A service container and service providers (Dependency injection).
- Named routes and route model binding.
- Eloquent's relations, scopes and query builder (Queries).
- Blade components and auto-escaping.
- An in-process HTTP test client and model factories (Testing).
Habits to adjust
- Before creating a table, ask whether editors manage the data: if so, it is a content class.
- Escape every printed value with
|wash. - Run
./console exp:velocity deployafter code changes, as you wouldoctane:reload. - Check where a setting comes from with
./console exp:ini wherebefore changing it.
Your first week
Follow the plan on Coming from Symfony; it is the same for Laravel developers, with Task: build a small CRUD module as the centerpiece.
Related pages
- Concept dictionary
- When to choose Exponential
- Ten pitfalls for framework developers
- 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.