В моем проекте laravel 4 настроено несколько сред.
Настройка среды: разработка называется «разработка», а производство называется «производство».
В моей папке app / config у меня есть две дополнительные папки. По одному на каждое название среды.
Смотрите скриншот:
Внутри этих папок у меня есть отдельные файлы конфигурации для database.php и app.php.
Они работают, как ожидалось. Laravel использует мою локальную конфигурацию базы данных при локальном запуске и производственную при запуске в реальном времени.
Теперь я добавил новый пакет, который требует файл конфигурации. Это проживает в /app/config/packages/greggilbert/config.php
,
Мне нужно иметь возможность устанавливать разные конфигурационные файлы так же, как я делаю для базы данных. Итак, я предполагал создать такую же файловую структуру в /development
или же /production
будет работать, но это не так.
Вот новый скриншот:
Связанные с пакетом, специфичные для среды файлы конфигурации должны быть помещены в каталог пакета в подкаталоге, названном в честь среды. Так что в вашем случае это будет
app
- config
- packages
- greggilbert
- recaptcha
- development
- config.php
- production
- config.php
Но в некоторых случаях это может стать очень уродливым и обременительным. Это может быть решено более (на мой взгляд) чище и более элегантно файлы среды в корневом каталоге вашего приложения:
/.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.
Других решений пока нет …