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