У меня есть 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' .