Как получить данные конфигурации в laravel в подпапке

У меня есть Laravel Administrator Plugin, и я создал страницу администратора настройки, которая находится в:

приложение / Config / администратор / Настройки / site.php

Приложение может хранить данные, но когда я пытаюсь получить некоторые данные в одном из моих контроллеров, например:

Config :: получить ( 'administrator.settings.site')

Я могу получить возвращаемое значение … Всегда null или array 0.

Как я могу получить эти значения конфигурации?

Решение:

Вы можете использовать путь к файлу, а не точечную нотацию для путей к файлам:

Config::get('administrator/settings/site.variable_name'); 

Некоторое Объяснение

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

Поэтому вы можете использовать Config::get('administrator/settings/site.variable_name'); получить $ variable_name от administrator/settings/site.php или ENV_DIR_NAME/administrator/settings/site.php зависимости от вашей среды.

Каталоги внутри app/config считаются средами. Например, app/development/database.php будет работать с Config::get('database.whatever') когда вы находитесь в своей «разработке», в то время как app/production/database.php будет считаться с помощью Config::get('database.whatever') когда вы находитесь в «производственной» среде.

Laravel возвращается к файлу config/config/*.php если нет файла среды.

Заметка

Я считаю, что в пакете admin есть файл конфигурации в app/config/packages/frozennode/administrator/administrator.php который пакет хотел бы использовать для его настроек. Это должно быть доступно с использованием этого соглашения : Config::get('package::file.option');

Я столкнулся с очень похожими проблемами при использовании этого пакета Laravel-Excel .

Решение, которое мне было нужно, несколько отличалось от решения выше. Мне нужно было использовать функцию переопределения конфигурации Laravel, чтобы иметь один параметр конфигурации для обычного исполнения и другой для тестирования. В частности, я обычно хотел, чтобы файлы Excel хранились в storage/excel и я хотел, чтобы они были помещены в storage/testing/excel при тестировании.

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

 $directory = Config::get('packages/maatwebsite/excel/export.store.path'); 

Решение заключалось в использовании префикса пакета, чтобы загрузчик конфигурации соблюдал среду:

 $directory = Config::get('excel::export.store.path'); 

Я не совсем уверен, откуда взялось название excel shorthand, но я подозреваю, что это как-то связано с фасадом Excel в пакете, демонстрирующим себя как 'excel' .