用户如何在Laravel中编辑配置值?

时间:2017-01-27 19:46:17

标签: laravel

我在Laravel 5.3中创建了一个可邮寄的类,并在config / mail.php中设置名称的全局变量并返回电子邮件。我想让管理员用户可以编辑这些值,而无需他们转到配置文件或编辑.env。我该怎么做?

2 个答案:

答案 0 :(得分:0)

Laravel中没有此类功能,因此您需要使用其中一个软件包,例如this one

答案 1 :(得分:0)

您可以编写这样的帮助函数来编辑.env

function saveConfiguration($values, $configFilename = '.env') {
        if (empty($values) || !is_array($values)) {
            return false;
        }

        $envFile = base_path($configFilename);
        if (!File::exists($envFile)) {
            $existingConfig = [];
        } else {
            $existingConfig = file($envFile);
        }

        $configs = [];
        foreach ($existingConfig as $config) {
            if (!empty(str_replace(' ', '', $config))) {
                $config = str_replace([
                    "\r",
                    "\n"
                ], ['', ''], $config);
                $configParts = explode('=', $config, 2);
                if (!empty($configParts[1])) {
                    if (!array_key_exists($configParts[0], $values)) {
                        $configs[] = $configParts[0].'='.$configParts[1];
                    }
                }
            }
        }

        foreach ($values as $key => $value) {
            $value = str_replace('"', '\"', $value);
            if (strpos($values[$key], ' ') !== false) {
                $configs[] = $key.'="'.$value.'"';
            } else {
                $configs[] = $key.'='.$value;
            }
        }

        File::put($envFile, implode("\n", $configs));

        return true;
    }

然后用它来保存.env,并配置你的config / mail.php来使用那里的凭证