- What does dragon-code/extended-routes do in a Laravel app?
- It extends Laravel's native router with macros that generate resource-style routes for soft-deleted model operations, mainly restore and force-delete endpoints. It also wires route model binding through withTrashed so trashed records can resolve. It works alongside standard routing rather than replacing it, and it requires no configuration after installation.
- How do I install dragon-code/extended-routes?
- Install it with composer require dragon-code/extended-routes. Laravel service-provider auto-discovery registers the macros, so there is no config file to publish and no manual provider entry in a typical app. Before production use, confirm the package supports your exact Laravel and PHP versions because the repository is archived.
- Which Laravel and PHP versions does extended-routes support?
- The last release was 2024-03-15, and the repository is archived, so there has been no compatibility work for Laravel 11 or 12 and no PHP 8.3 or 8.4 test matrix. Treat the supported Laravel version as frozen at whatever it shipped against. Verify with composer why, composer outdated, and a full route:cache and route:clear round trip in staging.
- Is extended-routes compatible with Laravel route caching?
- Yes, the package overview states it is fully compatible with Laravel's route cache and middleware. The macros emit normal routes, so route:cache and route:clear should behave like native routing. Because the package is archived, still exercise route:cache and route:list in staging after any Laravel upgrade.
- Does this package work with soft deletes and route model binding?
- Yes, its main purpose is to add restore and force-delete routes for soft-deletable models and to resolve bindings with withTrashed. It does not change your model logic, authorization, or storage layer, so you still need SoftDeletes and the usual policies. Check that the generated endpoints match your authorization expectations before exposing them.
- Can I use extended-routes alongside existing Laravel routes and middleware?
- Yes, it is designed to work alongside native routing, so existing route definitions, middleware, groups, and names should continue to behave as expected. The macros produce standard Laravel routes, which means middleware applied through groups or route methods still applies. It lives entirely in the HTTP routing layer and does not touch domain logic or storage.
- Is dragon-code/extended-routes maintained and safe for production?
- The repository is archived, the last release was 2024-03-15, and it has 16 stars and 0 dependents. The MIT license makes forking or vendoring easy, but archived status means no security triage, bug fixes, Laravel compatibility work, or maintainer support. Production use effectively transfers maintenance to your team, so weigh the convenience against owning the code indefinitely.
- What are the alternatives to extended-routes for restore and force-delete routes?
- The recommended alternative is explicit first-party routes using withTrashed bindings plus a small trait or Route::bind closure, roughly 40 to 80 lines across a service provider and a trait. If the macro surface proves genuinely broad, fork the MIT-licensed package into a private namespace, pin it, and add Laravel-version CI. Both paths remove the archived public dependency, and the hand-rolled path removes the dependency entirely.
- Does extended-routes support nested resources and apiResource variants?
- The package registers resource-style macros, but the assessment flags nested resources and apiResource variants as the most likely breakage points. Because the repository is archived, there is no ongoing compatibility work for newer Laravel resource routing changes. Inventory every route the macros generate and diff its output against route:list before committing.
- How should I test or migrate away from extended-routes?
- Start by inventorying every route the macros generate or would generate, then replace them with explicit definitions using withTrashed bindings and a small trait or Route::bind closure. Land a route-listing snapshot test to lock behavior before further changes, and run route:cache and route:clear in staging. Prototype the hand-rolled equivalent, which is roughly a sub-day task, and diff its route:list output for parity.