modera/mjr-integration-bundle
A Symfony bundle that wires MJR into your PHP application, shipping ready-made services, configuration and integration points so you can connect, sync and work with MJR data without writing boilerplate glue code yourself.
Reality check before you install anything: this is a Symfony bundle, not a Laravel package. It will not drop into a Laravel config/app.php providers array. The description says it "provides a low-level integration of MJR into Symfony" — meaning it wires a Modera runtime into the Symfony DI container. As a Laravel developer you either (a) use it inside a Symfony app that sits next to your Laravel service, or (b) read its compiler passes/extension as a reference and reimplement the wiring as a Laravel service provider yourself. There is no Laravel bridge.
Minimal steps if you go the Symfony route:
composer require modera/mjr-integration-bundle (be aware the last tag is 2016-06-14 — expect Symfony 2.x/3.0-era constraints and abandoned transitive deps).app/AppKernel.php (or config/bundles.php on newer Symfony) as new Modera\MjrIntegrationBundle\ModeraMjrIntegrationBundle().ModeraMjrIntegrationBundle.php — what it registers, whether it defines compiler passes.DependencyInjection/ — the extension and its load() method: this is where the real config → service wiring happens.Resources/config/ — the actual service definitions and any tagged services.CompilerPass/ (if present) — where ordering/decorating of MJR services happens.framework, check php bin/console debug:container for the services it exposes, and confirm they resolve. That's the whole "hello world" — there's no UI, no facade, no route.Because this is a low-level integration bundle, treat it as glue, not a feature package. Patterns that actually work:
debug:container rather than guessing.addCompilerPass($pass, PassConfig::TYPE_BEFORE_OPTIMIZATION, -10) etc.) so you see the final service graph.config.yml under the modera_mjr (or mjr) root key into parameters. Read the extension's Configuration class to know the exact keys — they are the contract.ServiceProvider/Singleton in Laravel if you need the same integration.composer require, or Composer will fail on abandoned/conflicting constraints.debug:container --tag=... → lint:yaml / lint:container → cache:clear -vvv. Don't expect a README to save you.public: false or fully-qualified IDs without autowiring aliases. If debug:container shows the service but injection fails, add an alias or a public: true override in services.yml rather than editing vendor code.Configuration::getConfigTreeBuilder() rarely matches the bundle name (e.g. modera_mjr vs mjr_integration). Copy it verbatim from the class; guessing is a common 3-hour rabbit hole.bin/console cache:clear; in dev, rm -rf var/cache when things look stale.decorates: in YAML) rather than forking the bundle — you leave a clean upgrade path if it's ever revived. Compiler passes are the sanctioned hook; subclassing the bundle rarely works cleanly.app/Support/Mjr (or your own private package) and pin it there. That gives you PHP 8 fixes and Laravel-friendly service wiring without fighting upstream.How can I help you explore Laravel packages today?