enhavo/calendar-bundle
The Enhavo Calendar Bundle is a subtree split of the Enhavo CMS, an open source PHP project built on the Symfony framework for flexible, complex data structures with a clean, usable interface. See the main repository for details.
config/calendar.php, and no package discovery. composer require enhavo/calendar-bundle inside a Laravel app gives you nothing to call.composer require enhavo/enhavo and enable the bundle via the main CMS config), not standalone.DependencyInjection/ (services and config tree), Resources/config/ (routes, Doctrine mappings, admin metadata), Model/ or Entity/ (the actual event data model), Form/, Controller/, and Resources/views/. That is the fastest way to learn the real API surface, because there is no standalone documentation.Http::get(). This is the realistic "day-to-day" pattern for a Laravel developer and the only integration path that does not require rewriting the bundle.// app/Services/Calendar/EnhavoCalendarClient.php
class EnhavoCalendarClient
{
public function upcoming(): Collection
{
return Http::baseUrl(config('services.enhavo.url'))
->retry(2, 200)
->get('/api/events/upcoming')
->throw()
->collect('data');
}
}
Wrap the HTTP call in Cache::remember() keyed on date range so public calendar pages do not hammer the CMS. Bind the client as a singleton in a service provider; this is the only "Laravel integration" that actually exists.Model/ first, then create an Eloquent model with matching column names (startDate, endDate, title, text, and whatever recurrence fields the bundle defines). Keep the mapping in a doc comment so a future move to Enhavo is a schema rename, not a redesign.templates/bundles/EnhavoCalendarBundle/. Change behavior by decorating services or overriding definitions — never by editing vendor files.enhavo/enhavo. If you file a bug against this repo, nothing happens. Any patch you need must go upstream, or live in a private fork you maintain and rebase against the monorepo.composer why before committing.enhavo/calendar-bundle, you can miss CVEs in the transitive CMS. Add the main package to your scan list explicitly.config('calendar.*') or Calendar::events() is wrong. The only Laravel-side seam is HTTP.eluceo/ical, sabre/vobject, rlanvin/php-rrule) instead.DependencyInjection/Configuration.php, not a Laravel config file. If you are integrating against the Enhavo service, read that file to see every knob — there may be none you need, and there may be required ones you would otherwise miss.bin/console debug:container / debug:router to discover what the bundle actually registers. Across the HTTP boundary, log request/response payloads and enable Http::retry() with backoff; the Enhavo service is a single point of failure for every calendar page in Laravel, so surface its errors distinctly rather than swallowing them into empty collections.templates/bundles/EnhavoCalendarBundle/), service decoration, and Doctrine entity extension (mapped subclass or additional fields on your own entity). There is no event/hook API for Laravel-style extension, and no plugin contract exposed on the split.How can I help you explore Laravel packages today?