oswis-org/oswis-web-bundle
OSWIS Web Bundle packages reusable web application components for OSWIS projects, providing shared controllers, templates, and configuration for PHP web apps. It centralizes common frontend and backend utilities so teams avoid duplication and keep Symfony-based applications consistent and easier to...
Reality check before anything else: this is a Symfony bundle, not a Laravel package. The install footprint is config/bundles.php registration, a DI extension, XML/YAML service definitions, Doctrine entities, and Twig templates. There is no service provider, no publishable config, no migrations, no facades, and no framework contracts your Laravel app recognises. composer require oswis-org/oswis-web-bundle into a Laravel project will succeed and then do nothing — the bundle is never booted because Laravel has no kernel-registered bundle list.
So "getting started" for a Laravel team splits two ways:
Path A — you actually need this capability in a Laravel app. Start with a one-hour spike in a throwaway Symfony skeleton, not in your Laravel repo:
composer create-project symfony/skeleton oswis-probe && cd oswis-probecomposer require oswis-org/oswis-web-bundleconfig/bundles.php: OswisWebBundle::class => ['all' => true]config/routes.yamlbin/console config:dump-reference oswis_web — this is where you learn the config tree, because it isn't documented in the READMEbin/console debug:router, debug:container | grep oswis, and open a browserYou are not doing this to use the package. You are doing it to read the domain model, decide whether it's worth porting, and produce a defensible go/no-go.
Path B — you're evaluating whether to port. Read, in this order: the bundle class, DependencyInjection/Configuration.php (the real config contract), Entity/ (this is the data model you'd port to Eloquent), Controller/ + routing (your route map), and Resources/views/ (your Blade conversion list). That's your port estimate, and it's probably the most valuable artefact you'll get out of this dependency.
The only pattern that reliably works in a Laravel codebase is the port, not the bridge. There is no maintained Laravel adapter and 0 dependents on Packagist means nobody has built one you can lean on. Plan for a one-off translation: Doctrine entities → Laravel migrations + Eloquent models, Symfony controllers → invokable Laravel controllers, Twig templates → Blade, bundle config → config/oswis.php. Do it in a branch, commit it as your own code, and drop the dependency. The result is a bounded cost you control instead of a pre-1.0 vendor you don't.
If you stay on Symfony (or bridge via a service boundary), the supported patterns are:
templates/bundles/<BundleName>/ before the bundle's own views. Copy and edit; never edit vendor/.config/routes.yaml to replace a shipped controller's behaviour without touching the controller.src/Entity/ and wire them with Doctrine's resolve_target_entities in doctrine.yaml, or use single-table inheritance. Never fork the bundle to add a column.Bridging workflow if you go the service route: pin the exact version, commit the lockfile, add the dependency to your review list, and wrap every call behind an interface you own so the swap is a contained refactor. Two version bumps without breakage is your continue/re-evaluate gate.
bin/console config:dump-reference oswis_web (adjust the root key) is your only reliable source of truth. Read Configuration.php alongside it.bin/console doctrine:schema:validate before every bump, and diff the generated schema, not the entity code.debug:router, debug:container, and debug:event-dispatcher | grep oswis find 90% of integration problems. The bundle almost certainly hooks the Symfony event dispatcher, not Laravel's, so any event-based extension you write is not portable.How can I help you explore Laravel packages today?