2014-09-17 4 views
0

В моем проекте laravel 4 есть несколько окружений.Laravel 4 отдельных файла конфигурации для пакетов

Настройка окружения: разработка называется «разработка», а производство называется «производство». В моей папке app/config у меня есть две дополнительные папки. Один для каждого имени среды.

Смотрите скриншот:

enter image description here

Внутри этих папок у меня есть отдельные конфигурационные файлы для database.php и app.php. Они работают должным образом. Laravel использует мою локальную конфигурацию базы данных при запуске локально и при запуске в режиме реального времени.

Теперь я добавил новый пакет, для которого требуется файл конфигурации. Это находится в /app/config/packages/greggilbert/config.php.

Мне нужно настроить различные файлы конфигурации так же, как и для базы данных. Итак, я предположил, что создание той же файловой структуры в /development или /production будет работать, но это, похоже, не так.

Вот новый скриншот:

enter image description here

+1

Вы должны поместить папку среды именем в каталоге пакета: 'приложение/Config/пакеты//<имя_пакета>//config.php' – Quasdunk

+0

@Quasdunk Это работает, если вы поставите это как ответ я приму. – CharliePrynn

ответ

1

пакет связанных, файлы конфигурация среды конкретной должны быть размещены в директории пакета в пределах подкаталога с именем среды. Так что в вашем случае это будет

app 
    - config 
     - packages 
     - greggilbert 
      - recaptcha 
       - development 
        - config.php 
       - production 
        - config.php 

Но в некоторых случаях это может стать действительно уродливым и громоздким. Это может быть решена в (на мой взгляд) чище и более изящный способ через enviroment files в прикладном корневом каталоге:

/.env.development.php

<?php 
return [ 

    // any configuration settings for your local environment 

    'RECAPTCHA_TEMPLATE' => 'customCaptcha', 
    'RECAPTCHA_LANGUAGE' => 'en', 

]; 

Таким образом, вы можете оставить каталог пакета, как это:

app 
    - config 
     - packages 
     - greggilbert 
      - recaptcha 
       - config.php 

Laravel загрузит файл среды в соответствии с окружающей средой и сделать переменные среды в глобальном масштабе, доступные через getenv(). Итак, теперь вы можете просто захватить указанный шаблон для текущей среды с помощью getenv('RECAPTCHA_TEMPLATE') из config.php.