2015-05-14 7 views
0

Я только что прочитал Laravel 5 док на конфигурацию, основанную на среде http://laravel.com/docs/5.0/configuration#environment-configurationLaravel поставщики услуг 5 конфигурации для локальных только

Я понимаю, как .env файлы могут быть использованы для настройки некоторых переменных, но как я могу настроить, какие службы провайдеры загружаются на основе среды?

Например, в моей «локальной» среде я использую этот плагин debugbar, которому нужен поставщик услуг, но я не хочу его определять в config/app.php для производства.

В Laravel 4.2 Я мог бы просто создать config/local/app.php, но это больше не работает, что альтернатива?

ответ

1

Я считаю, что если вы установите APP_DEBUG в false в вашем .ENV-файле, debugbar автоматически исчезнет.

Также я написал класс промежуточного ПО, чтобы позаботиться об этом.

Метод ручка может выглядеть в вашем случае:

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

    return $next($request); 
} 

Тогда вы просто добавить его в список промежуточного программного обеспечения в приложение/Http/kernel.php и вы хорошо идти.

У меня есть несколько дополнительных условий и более условий, поэтому этот точный код не проверяется, но он должен работать, и вы должны получить эту идею.

Позаботьтесь.

+0

Благодарности MaGnetas, это действительно работает, но то, что я обеспокоен тем, что определение поставщика услуг определено в моей производственной программе app.php, хотя оно там никогда не используется. Это похоже на шаг назад с точки зрения производительности/гибкости, когда я не могу иметь отдельный файл конфигурации alltogether. – user391986

+0

Нет, среда теперь имеет общий доступ ко всем файлам конфигурации. Если вам нужно отдельное значение конфигурации для каждой среды, это должно произойти из .env файла, я считаю. – MaGnetas

1

Эта статья была полезна для меня:

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'); 
     } 
    } 
} 
+0

Отличный! Это устранило проблему на сервере! – tttony