xrow/event-bundle
xrow/event-bundle is a Symfony bundle that adds event management capabilities, helping PHP applications model, schedule, and display events. It integrates with existing xrow projects and streamlines common event workflows for developers.
First, a reality check that shapes everything below: this is not a Laravel package. xrow/event-bundle is a Symfony 2.x bundle for eZ Publish 5 (the eZ5 stack that wraps the legacy eZ kernel), and its entire purpose is to ship a custom ezpublishevent datatype plus the fix-ups that datatype needs to keep working after upgrades. It has no service provider, no facade, no config file Laravel reads, and its classes extend eZ\Publish\Core\FieldType\* / legacy kernel datatype interfaces that simply don't exist in a Laravel app. If you are looking for a Laravel publishing/event package, stop here — this is not it.
Assuming you actually maintain an eZ Publish 5 site (the only context where "leveraging" this package makes sense), the minimal path is:
Datatypes/ (or eZ/Publish/FieldType/) directory containing the ezpublishevent field type, the legacy datatypes/ezpublishevent kernel classes, and the DependencyInjection/ extension. That layout tells you where the fix lives — usually the value/definition classes and the legacy type registration.composer require xrow/event-bundle), pinning to whatever branch matches your eZ version. Check the composer.json for a symfony/* or ezsystems/ezpublish-kernel constraint; that constraint is your real compatibility contract.app/AppKernel.php and the datatype in ezpublish/config/ezpublish.yml under ezpublish.fieldType, plus the legacy registration in override.ini / ezinfo.php if the type needs to resolve in the legacy admin.ezpublishevent attribute and confirm it saves, displays, and re-reads without a fatal in var/log/ezpublish.log. That round-trip is your first use case and the whole point of the package: it makes the custom datatype stop breaking on eZ5.There is no Laravel-style "install and use the facade" workflow. Day-to-day use falls into three patterns:
ezpublishevent resolvable. You wire it in ezpublish.yml and, where the legacy kernel still looks, in INI overrides. Treat the bundle as a dependency of your content model, not of your application code — you rarely call into its classes directly.ezpublishevent attribute to a content class, then store event data (publish trigger / event descriptor, depending on how the type is implemented) through the public API (ContentService::createContent / updateContent with a FieldValue). In templates, render via ez_render_field or the legacy content/attribute fetch, and pull the value through the field type's toHash() if you need it in Twig.ezpublish.content events (ContentService::publishContent listeners) or legacy workflow events, that is where you observe/validate this datatype. Keep integration in your own subscribers rather than editing the bundle, so upstream updates remain mergeable.Integration tips: keep a pinned eZ5 project skeleton, install bundle edits via composer (not by copying classes into extension/), and add a smoke test that creates/updates content carrying the datatype so regressions surface before deploy.
Class not found or a kernel datatype error at boot, not a clean Composer complaint. Match the branch to your eZ minor version before debugging anything else.Illuminate dependencies. Any attempt to php artisan vendor:publish will find nothing. The Symfony bundle and eZ Publish integration are the only supported surfaces.ezpublish.yml; the legacy admin/kernel still reads override.ini/content.ini style config. If the type works on the front end but not in the admin, the legacy INI registration is almost always the missing half.var/log/ezpublish.log and Symfony's app/logs/dev.log, not with dd()/dump-style debugging — the boot/kernel errors that matter happen before any of your app code runs.toHash(), fromHash(), and legacy store/restore equivalents; a missing method surfaces as a silent empty value rather than an exception. When data "disappears" after edit, check both hash and store paths.How can I help you explore Laravel packages today?