微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel AppServiceProvider 启动方法不从数据库中读取最近的值

如何解决Laravel AppServiceProvider 启动方法不从数据库中读取最近的值

我的 AppServiceProvider 中有一个配置设置,它检测数据库中的应用程序语言并使用 select 属性填充视图,并且我的基本控制器中有一个构造函数控制器,它允许用户更改应用程序语言,它会影响数据库配置设置。

问题是每当用户更改语言时,都会成功更新配置设置表,但 AppServiceProvider 始终读取以前的值,用户必须再次更改语言才能看到对应用程序的影响。

AppServiceProvider 代码

 public function boot()
    {
        Paginator::useBootstrap();
        if(class_exists('\App\Lib\Helpers') && method_exists(new \App\Lib\Helpers(),'bootProviders')){
            \App\Lib\Helpers::bootProviders();
        }

        $select = new Select('language');
        $select->setAttribute('class','form-control');
        $select->setAttribute('id','language');
        $options = include '../resources/lang/list.PHP';
        $select->setValueOptions($options);

        $lang = getSetting('config_language');
        if(empty($lang)){
            $lang = 'en';
        }

        $select->setValue($lang);

        view()->share('select',$select );

    }

BaseController 构造方法

 public function __construct(Request $request) {
      
        $settingsTable = new SettingTable();

        if(request()->isMethod('post')){
            $language = $request->get('language');
            if(!empty($language)){
                $settingsTable->saveSetting('config_language',$language);
                return redirect(selfURL());
            }
        }
    }  

仅供参考:我已经检查了数据库配置表,看它是否受到影响并且值是否已更改,但 AppServiceProvider 在从缓存中读取时以某种方式读取了先前的值。

保存设置方法

public function saveSetting($key,$value){
   $total= $this->tableGateway->update(['value'=>$value],['key'=>$key]);
    return $total;
}

getSetting 方法

function getSetting($key){
    $setting = \App\Setting::where('key',trim($key))->first();
    if($setting){
        return $setting->value;
    }
    else{
        return null;
    }
}

更新:我认为 AppServiceProvider 由于其性质而在控制器调用之前加载,所以这就是它具有先前值的原因。但如何使这种方法奏效?

如有任何建议,我们将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?