Having trouble to set up auto-discovery for a Facade

Published 2 months ago by andrechalom

Hi! I'm developing a small package for Laravel, and it's working fine under Laravel 5.4. I'm trying to provide the composer rules for the new auto-discovery on Laravel 5.5, but it is failing to find the required class. I wasn't able to find any in-depth documentation of the auto-discovery, but from the changes in Laravel Debugbar and from the Laracast's Video it seems that the syntax is pretty straightforward:

   "extra": {
        "branch-alias": {
            "dev-master": "1.0-dev"
        },
        "laravel": {
            "providers": [
                "AndreChalom\\LaravelMultiselect\\MultiselectServiceProvider"
            ],
            "aliases": {
                "Multiselect": "AndreChalom\\LaravelMultiselect\\MultiselectFacade"
            }
        }
    },  

The MultiselectFacade and MultiselectServiceProvider are working fine when explicitly included in the config/app.php file, and I can use the {!! Multiselect::select(...) !!} just fine in my blade templates. I can also comment out the "MultiselectServiceProvider" line and everything works fine - the provider is auto-discovered and registers the Multiselect service. Yay!

However, if I delete the "MultiselectFacade" line from the config/app.php, relying on the auto-discovery, suddenly the application fails with "Class 'Multiselect' not found". What I may be missing? How can I debug this?

Best Answer (As Selected By andrechalom)
ahmeddabak

try running

php artisan clear
composer update

it will generate a new bootstrap/cache/packages.php file

it should work for you

clay
clay
2 months ago (80,905 XP)

I tried loading your package to test, but packagist is on 0.0.3 which doesn't include the "laravel" key in composer.json for auto-discovery.

andrechalom

Hello, clay. Thanks for your input! You can load the "dev-master" from packagist, which has the required composer directives.

ahmeddabak

try running

php artisan clear
composer update

it will generate a new bootstrap/cache/packages.php file

it should work for you

andrechalom

That did it! Thanks so much and sorry for the late answer :)

Please sign in or create an account to participate in this conversation.