如何在laravel框架中动态修改config里面值?

第一次使用 laravel 在做商城后台时,对于 composer 下来的支付包时自带了 config 配置的参数,想在后台实现管理动态修改这些支付的配置信息。

laravel框架中动态修改config里面值
翻阅了百度的各种文档,尝试了一些办法后。缓存无效,数据库存储不现实;

laravel框架中动态修改config里面值
后面想着本身 config 是一个 php 文件,通过 storage 去存储文件,在通过函数去获取文件的值,但是这种方法好像比较 low,想问问大家有什么建议和处理的方法?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

可以用 var_export 尝试下,需要新建立一个配置文件,然后用来存储后台动态配置。

function getConfig()
{
    // 使用laravel读取这个位置文件
    $config = [
       'debug' => true,
       'web_name' => '测试配置'
    ];
    return $config;
}

function setConfig($name, $value)
{
    $config = getConfig();
    $config[$name] = $value;
  file_put_contents('/config/path/config.php', "<?php \n return ".var_export($config, true)  . ";");

}

setConfig('topic_url', 'https://learnku.com/laravel/t/50682');

示例截图:

file

4年前 评论
Wangguv2019 (楼主) 4年前
讨论数量: 7

可以在获取后台配置后动态设置配置值:

config(['pay.alipay.appid' => 'xxx']);
4年前 评论
Wangguv2019 (楼主) 4年前
00x00 4年前
Wangguv2019 (楼主) 4年前
ORH (作者) 4年前

如果是多商户的话,我建议把配置写入数据库

4年前 评论

想在后台动态修改配置,那配置就存到数据库,,,

4年前 评论

以前写过一个包来解决这个问题,不过场景有些许差异,我们涉及的是多系统交互,共用配置,动态更新,你可以参考 github.com/crcms/file-config

4年前 评论
Wangguv2019 (楼主) 4年前

可以用 var_export 尝试下,需要新建立一个配置文件,然后用来存储后台动态配置。

function getConfig()
{
    // 使用laravel读取这个位置文件
    $config = [
       'debug' => true,
       'web_name' => '测试配置'
    ];
    return $config;
}

function setConfig($name, $value)
{
    $config = getConfig();
    $config[$name] = $value;
  file_put_contents('/config/path/config.php', "<?php \n return ".var_export($config, true)  . ";");

}

setConfig('topic_url', 'https://learnku.com/laravel/t/50682');

示例截图:

file

4年前 评论
Wangguv2019 (楼主) 4年前

取配置自己初始化就行了

$alipay = Pay::alipay($this->config)->web($order);
4年前 评论

我记得 yansongda 的支付包是可以传配置项的,但是我写支付中心的时候用过这个包,当时是单例出来一个他的实例 然后分发 获取配置,不要随便去修改 laravel 的配置文件,如果并发高了你就知道没你好果汁吃了

4年前 评论