redaxo/source
REDAXO is a PHP-based CMS/website framework focused on flexible, module-driven content creation with full control over input/output. Multilingual, highly extendable, and workflow-friendly, with strong community resources, docs, and addons.
mediapool, structure, users). This aligns well with modern Laravel/Lumen practices, where modularity and composability are key.HttpFoundation, Console, and DependencyInjection).MEDIA_LIST_QUERY, SLICE_BE_PREVIEW), similar to Laravel’s events/listeners or service providers. This enables deep customization without core modifications.rex_sql layer (with PDO fallback), which can be mapped to Laravel’s Eloquent/Query Builder for data access.rex_media_service, rex_file) can be wrapped in Laravel facades or service containers for seamless integration.config/app.php, lang/ directories).| Risk Area | Description | Mitigation Strategy |
|---|---|---|
| Core vs. Laravel Routing | REDAXO uses its own URL rewriting (rex_url), conflicting with Laravel’s router. |
Use a reverse proxy (Nginx/Apache) to route /redaxo/ to REDAXO and the rest to Laravel. |
| Session Management | REDAXO and Laravel may conflict over session storage (e.g., session_start()). |
Configure separate session drivers (e.g., Redis for Laravel, file-based for REDAXO). |
| Database Schema | REDAXO’s schema (e.g., rex_content, rex_media) may clash with Laravel migrations. |
Use database namespaces (e.g., redaxo_*) or a shared schema with caution. |
| Template Conflicts | REDAXO’s templating (Smarty/Blade-like) may overlap with Laravel Blade. | Isolate REDAXO templates in a subdirectory (e.g., /redaxo/templates/) and use Laravel’s @include for hybrid rendering. |
| Dependency Overlap | Symfony components in REDAXO may conflict with Laravel’s installed versions. | Use Composer’s replace or conflict to enforce version consistency. |
| Caching Layer | REDAXO’s caching (e.g., rex_cache) may interfere with Laravel’s cache drivers. |
Implement a shared cache backend (Redis/Memcached) with distinct keyspaces. |
| CLI Tooling | REDAXO’s rex CLI commands may conflict with Laravel’s artisan. |
Use custom command namespaces (e.g., php redaxo:command vs. artisan). |
Use Case Clarity:
Data Flow:
rex_content) and Laravel (e.g., Eloquent models)?Authentication:
Deployment:
Performance:
Long-Term Maintenance:
| Laravel Component | REDAXO Equivalent | Integration Strategy |
|---|---|---|
| Routing | rex_url, rex_router |
Use a reverse proxy (Nginx) to route /admin to REDAXO and /api to Laravel. |
| Authentication | rex_user, rex_auth |
Map REDAXO users to Laravel’s users table or use OAuth2 (Passport) for SSO. |
| Database (Eloquent) | rex_sql, rex_content |
Create Eloquent models that extend REDAXO’s rex_sql or use raw queries with caution. |
| Templating (Blade) | Smarty/Blade-like fragments | Replace REDAXO templates with Laravel Blade via a custom loader or hybrid rendering. |
| API (Lumen/Fortify) | REDAXO’s REST API (if extended) | Build a Laravel API layer that queries REDAXO’s database or exposes its endpoints. |
| File Storage | rex_file, mediapool |
Use Laravel’s Filesystem to wrap REDAXO’s rex_file or sync media to S3. |
| Event System | Extension Points (EPs) | Create Laravel events that trigger REDAXO hooks or vice versa via a bridge service. |
| Queue/Jobs | Custom cron jobs | Replace REDAXO cron jobs with Laravel Queues (e.g., php artisan queue:work). |
| Localization | rex_language |
Extend REDAXO’s translations with Laravel’s lang/ directory or use a shared JSON store. |
| Caching | rex_cache |
Use Redis/Memcached as a shared backend with distinct keyspaces (e.g., redaxo::, laravel::). |
Phase 1: Coexistence (Minimal Integration)
/var/www/redaxo, /var/www/laravel)./admin* → REDAXO/api* → LaravelPhase 2: Data Synchronization
Post::where('rex_content.*')).Phase 3: API-First Approach
/api/redaxo/posts).Phase 4: Full Convergence (Optional)
How can I help you explore Laravel packages today?