1

我刚刚阅读了基于您的环境的 Laravel 5 配置文档http://laravel.com/docs/5.0/configuration#environment-configuration

我了解如何使用 .env 文件来配置一些变量,但是如何配置基于环境加载的服务提供商?

例如,在我的“本地”环境中,我使用这个调试栏插件,它需要一个服务提供者,但我不想在 config/app.php 中为生产定义它。

在 Laravel 4.2 中,我可以只创建 config/local/app.php 但这似乎不再起作用,还有什么替代方法?

4

2 回答 2

3

这篇文章对我很有帮助:

https://mattstauffer.co/blog/conditionally-loading-service-providers-in-laravel-5

这就是我所做的并且有效:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        if ($this->app->environment('local')) {
            $this->app->register('Barryvdh\Debugbar\ServiceProvider');
        }
    }
}
于 2016-05-08T15:07:15.353 回答
1

我相信如果您在 .env 文件中将 APP_DEBUG 设置为 false,调试栏将自动消失。

我还写了一个中间件类来解决这个问题。

在您的情况下,句柄方法可能如下所示:

public function handle($request, Closure $next)
{
    if (app()->environment('production'))
        \Debugbar::disable();
    else
        \Debugbar::enable();

    return $next($request);
}

然后你只需将它添加到 app/Http/kernel.php 中的中间件列表中就可以了。

我有一些额外的条件和更多的环境,所以这个确切的代码没有经过测试,但它应该可以工作,你应该明白。

小心。

于 2015-05-14T05:16:58.917 回答