我在Laravel 4中创建简单的Web应用程序。我有后端来管理应用程序内容。作为后端的一部分,我希望有UI来管理应用程序设置。我希望我的配置变量存储在文件[FOLDER: /app/config/customconfig.php ]中。
我想知道Laravel是否有可能拥有自定义配置文件,可以通过后端UI进行管理/更新?
答案 0 :(得分:5)
您必须扩展文件加载器,但它非常简单:
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');
答案 1 :(得分:4)
我这样做了......
config(['YOURKONFIG.YOURKEY' => 'NEW_VALUE']);
$fp = fopen(base_path() .'/config/YOURKONFIG.php' , 'w');
fwrite($fp, '<?php return ' . var_export(config('YOURKONFIG'), true) . ';');
fclose($fp);
答案 2 :(得分:1)
Afiak没有用于操作配置文件的内置功能。我看到了两个选项来实现这个目标:
Config::set('key', 'value');
覆盖默认配置但请注意在运行时设置的配置值仅为当前请求设置,不会转移到后续请求。 @see:http://laravel.com/docs/configuration
一般来说,我更喜欢第一种选择。在版本控制,部署,自动化测试等方面,覆盖配置文件可能会带来一些麻烦。但与往常一样,这在很大程度上取决于您的项目设置。
答案 3 :(得分:1)
基于有关当前版本(从5.1到6.x)的@Batman答案:
config(['YOUR-CONFIG.YOUR_KEY' => 'NEW_VALUE']);
$text = '<?php return ' . var_export(config('YOUR-CONFIG'), true) . ';';
file_put_contents(config_path('YOUR-CONFIG.php'), $text);