如何使用composer.json在Laravel 5中自动加载新文件夹?

时间:2016-01-02 20:22:03

标签: php laravel laravel-5 composer-php

我使用Laravel 5.2创建了一个小应用程序。我将我的所有工作都保存在名为" Modules"的文件夹中。位于App/Modules

现在,我正在尝试将我的Modules文件夹移出到App文件夹外的根目录""因此,我的Modules文件夹现在位于App旁边。

我想像Modules文件夹一样自动加载App文件夹。

自动加载Modules, I modified my自动加载section of my composer.json`,如下所示:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/",
        "Modules\\": "modules/"
    }
},

此外,在app.php配置文件中,我将此服务提供商添加到我的"提供商"阵列

Modules\Vendname\Surveys\Providers\CoreValidatorServiceProvider::class,

然后从命令行执行以下命令

composer dumpautoload

每次访问网站时,都会收到此错误

FatalErrorException in ProviderRepository.php line 146: Class 'Modules\Vendname\Surveys\Providers\CoreServiceProvider' not found

以下是我的CoreServiceProvider.php文件的代码

<?php

namespace Modules\Vendname\Surveys\Providers;

use Illuminate\Support\ServiceProvider;

class CoreServiceProvider extends ServiceProvider
{

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {

        if (! $this->app->routesAreCached()) {
            require __DIR__ . '/../routes.php';
        }

    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {

    }

}

我在这里做错了什么? 为了正确自动加载新文件夹,我需要做什么?

1 个答案:

答案 0 :(得分:1)

我终于开始工作了。

我注释掉了这行

Modules\Vendname\Surveys\Providers\CoreValidatorServiceProvider::class,
在app.php文件中。

然后在命令行中我执行了以下命令

php artisan clear-compiled
composer dumpautoload
composer update

然后我取消注释app.php文件中的行

Modules\Vendname\Surveys\Providers\CoreValidatorServiceProvider::class,