Я создаю простое веб-приложение в Laravel 4. У меня есть сервер для управления содержимым приложений. В качестве части бэкэнд я хочу иметь пользовательский интерфейс для управления настройками приложений. Я хочу, чтобы мои конфигурационные переменные сохранялись в файле [FOLDER: /app/config/customconfig.php ].
Мне было интересно, есть ли в Laravel возможность создать пользовательский файл конфигурации, который может управляться / обновляться через внутренний интерфейс?
Заранее благодарю вас!
Вам придется расширять файловый загрузчик, но это очень просто:
class FileLoader extends \Illuminate\Config\FileLoader { public function save($items, $environment, $group, $namespace = null) { $path = $this->getPath($namespace); if (is_null($path)) { return; } $file = (!$environment || ($environment == 'production')) ? "{$path}/{$group}.php" : "{$path}/{$environment}/{$group}.php"; $this->files->put($file, '<?php return ' . var_export($items, true) . ';'); } }
Применение:
$l = new FileLoader( new Illuminate\Filesystem\Filesystem(), base_path().'/config' ); $conf = ['mykey' => 'thevalue']; $l->save($conf, '', 'customconfig');
Я сделал это так …
config(['YOURKONFIG.YOURKEY' => 'NEW_VALUE']); $fp = fopen(base_path() .'/config/YOURKONFIG.php' , 'w'); fwrite($fp, '<?php return ' . var_export(config('YOURKONFIG'), true) . ';'); fclose($fp);
Afiak не имеет встроенных функций для управления конфигурационными файлами. Я вижу два варианта:
Config::set('key', 'value');
Но имейте в виду, что Значения конфигурации, установленные во время выполнения, устанавливаются только для текущего запроса и не переносятся на последующие запросы. @see: http://laravel.com/docs/configuration
В общем, я бы предпочел первый вариант. Переопределение файлов конфигурации может привести к некоторым проблемам, связанным с управлением версиями, развертыванием, автоматическим тестированием и т. Д. Но, как всегда, это сильно зависит от настройки вашего проекта.