- Can I use **ibexa/rest** directly in a Laravel project without Symfony?
- No, this package is built for Symfony and requires Symfony components like HttpKernel and DependencyInjection. You’ll need to integrate it via Laravel’s SymfonyBridge (e.g., `spatie/laravel-symfony-support`) or isolate it in a separate microkernel to avoid conflicts with Laravel’s native routing or service container.
- What Laravel versions does **ibexa/rest** support?
- The package itself doesn’t enforce Laravel version constraints, but it depends on Symfony components (e.g., v5+). Test compatibility with Laravel 8.x/9.x/10.x by ensuring Symfony’s required versions align with Laravel’s dependencies. Check the [Ibexa REST docs](https://ezsystems.github.io/ezplatform-rest-reference/) for Symfony version requirements.
- How do I authenticate Ibexa REST API requests in Laravel?
- Use Ibexa’s token-based auth (v5.0+) alongside Laravel Sanctum/Passport for JWT/OAuth2. Create a custom middleware in Laravel to validate Ibexa tokens against Symfony’s `TokenStorage`. Alternatively, wrap Symfony’s `AuthenticatorInterface` in a Laravel service provider to bridge authentication systems.
- Does **ibexa/rest** support real-time content updates (e.g., WebSockets) for Laravel frontends?
- No, this package provides REST endpoints only. For real-time updates, pair it with Ibexa’s [GraphQL bundle](https://github.com/ibexa/graphql) or implement Laravel Echo/Pusher to push changes triggered by Ibexa’s event system (e.g., `ContentPublishEvent`).
- How do I map Ibexa’s custom field types (e.g., `ezrichtext`, `ezobjectrelation`) to Laravel Eloquent models?
- Create custom accessors/mutators in your Laravel models to translate Ibexa’s field data into Laravel-compatible formats. For example, convert `ezrichtext` to HTML strings or `ezobjectrelation` to IDs. Use Laravel’s `getAttribute()` and `setAttribute()` methods to handle serialization/deserialization.
- Can I use **ibexa/rest** for backend-to-backerend (B2B) integrations with Laravel?
- Yes, the package’s OpenAPI/Swagger-compliant endpoints are ideal for machine-to-machine communication. Use Laravel’s HTTP client (e.g., `Guzzle`) to call Ibexa’s REST API for content operations, search, or publishing. For high-frequency requests, cache responses with Redis or implement batch processing via Laravel queues.
- What are the performance implications of using **ibexa/rest** in Laravel?
- Ibexa’s REST layer adds serialization/deserialization overhead, which may slow response times in high-traffic APIs. Mitigate this by caching API responses (e.g., Redis) or using Ibexa’s [GraphQL bundle](https://github.com/ibexa/graphql) for more efficient queries. Avoid direct database access; rely on Ibexa’s optimized repository layer.
- How do I handle Ibexa’s content versioning in Laravel migrations?
- Ibexa’s versioning system is independent of Laravel migrations. Use Ibexa’s REST API to manage versions (e.g., `GET /api/ez/content/{id}/versions`). Sync metadata (e.g., `version_info`) to Laravel models via observers or Laravel’s `created_at`/`updated_at` timestamps for audit trails.
- Are there alternatives to **ibexa/rest** for headless CMS in Laravel?
- Yes, consider Laravel-native packages like `spatie/laravel-medialibrary` (for media) or `orchid/software` (admin panel). For full CMS functionality, evaluate `spatie/laravel-cms` or self-hosted solutions like Strapi or Directus, which offer Laravel-friendly APIs. Ibexa’s strength lies in enterprise-grade content modeling, not Laravel integration.
- How do I test **ibexa/rest** integrations in Laravel?
- Use Laravel’s HTTP tests to mock Ibexa’s REST endpoints (e.g., `Http::fake()`). Test authentication by validating tokens with Symfony’s `TokenStorage` in isolated service containers. For complex workflows, spin up a Dockerized Ibexa instance (via `docker-compose`) and test against it using Laravel’s `DatabaseTransactions` or `RefreshDatabase` traits.