formers / former

A powerful form builder, for Laravel and other frameworks (stand-alone too)
https://formers.github.io/former/
1.34k stars 204 forks source link

Doesn't work on PHP8+ for standalone (non-laravel) apps #614

Open aleemb opened 5 months ago

aleemb commented 5 months ago

(new issue since #611 is stale)

Former is broken on PHP8+ standalone installs and throws the error:

Uncaught Illuminate\Contracts\Container\BindingResolutionException: Target [Illuminate\Routing\RouteCollectionInterface] is not instantiable while building [Illuminate\Routing\UrlGenerator]

I found the quick fix is as follows, however, I am not familiar with the framework to do this proper. The fix that works for me is inside FormerServicesProvider.php I add the following in bindCoreClasses under the Core Classes comment:

    $app->bindIf(
        \Illuminate\Routing\RouteCollectionInterface::class,
        \Illuminate\Routing\RouteCollection::class
    );

Trying $app->bindIf('routing', \Illuminate\Routing\RouteCollection::class); didn't work, however.

Hope this can be fixed in the repo so Former can once again be used outside of Laravel (when using PHP8+). This is the only thing preventing that use-case right now for anyone using it outside of Laravel, myself included.

stayallive commented 5 months ago

You mention outside Laravel but it looks like you are still using Illuminate components.

Can you share bit more of the stacktrace so we know what Former code specifically catches this?

I doubt this has anything to do with the PHP version though, would assume this behaves the same on every PHP version and if this works on other versions it's because other dependency versions have changes.