gepur-it/report-bundle
A Symfony bundle for creating configurable reports from custom data providers and rendering results in multiple formats. It helps integrate reusable report generation into Symfony applications with flexible configuration and a simple report-building workflow.
First, the framing: despite the name, gepur-it/report-bundle is a Symfony bundle, not a Laravel package. If you're working in a Laravel codebase you cannot composer require it and expect it to boot — it registers services through Symfony's Bundle/Extension/CompilerPass machinery and expects a Symfony kernel. Realistic options are (a) run it inside a small Symfony service/console app that talks to the same database, or (b) treat it as reference source and port the report-building logic into Laravel services. Decide this before writing any code; it changes the whole integration.
For a Symfony app:
composer require gepur-it/report-bundle — check what Symfony and PHP constraints composer.json declares. Last tagged release is May 2021, so expect symfony/* ^4.4 || ^5.x style constraints; on Symfony 6/7 you will likely need --ignore-platform-reqs-style workarounds or a fork.config/bundles.php.DependencyInjection/Configuration.php first. That tree is the authoritative list of config keys (report storage path, DB connection, renderer selection, etc.). Add a minimal config/packages/<alias>.yaml matching the alias returned by Configuration::getAlias().Resources/config/services.xml|yaml to learn the public service IDs — the generator/report-manager service you'll inject into a controller or command.Tests/ fixtures; with 2 stars and no docs site, the tests are effectively the documentation.First use case: pick the simplest end-to-end path — one report definition, one output format, triggered from a bin/console command rather than a web controller. Get report -> query -> render -> file on disk working before touching filters, scheduling, or UI.
addTag( and findTaggedServiceIds in src/.reports/{name}/{Y-m-d}/{id}.{ext}), and keep a retention policy outside the bundle.config/report.php merge. Symfony's Reference, tagged iterators, and %parameter% resolution have no Laravel equivalent. A "port" means rewriting the orchestration, keeping only the query/formatting ideas.Bundle subclasses) and Symfony 6's stricter container (private services by default, removed TreeBuilder behaviours). Run bin/console lint:container and debug:container early; if it won't compile, stop and reassess rather than fighting it.Configuration::getAlias(). Wrong key = silently ignored config, then a confusing "service not found" or missing-path error at runtime.debug:container <service> to confirm registration → debug:container --tag=<tag> to confirm your report was collected → debug:event-dispatcher if generation is event-driven. Most "my report doesn't show up" issues are a missing tag or a service that isn't public/autowired in the right namespace.Resources/views (override by placing same-path files in templates/bundles/<BundleName>/). Both are cheap ways to adapt output without forking.memory_limit on PDF rendering especially. Stream/chunk at the query level, raise limits only in the CLI command, and set an explicit statement timeout on the DB connection.How can I help you explore Laravel packages today?