您现在的位置是:首页 > ThinkPHP

李清波 2019-07-23 ThinkPHP 1367 复制当前网址

ThinkPHP5.1通过后台修改配置文件

我们做开发的时,很多地方都需要调用一些公共的配置信息,如网站名称、客服电话等基础信息,我们先来介绍一下通过后台修改配置文件的方法。


1563875341680684.png


逻辑:

模板文件设置好表单

根据表单提交的数据拼接成配置文件的数组格式,然后将拼接成的字符串通过file_put_contents函数写入配置文件即可。



控制器文件System.php

/**
 * 修改配置文件
 */
public function index(){

    if(request()->isAjax()){
        $filename =  Env::get('config_path').'config_base.php';

        file_put_contents($filename, "<?php\nreturn " . var_export($_POST['data'], true) . ";");
        return json(['code' => 1, 'data' => '', 'msg' => '保存成功!']);
    }

    return $this->fetch();
}

前提是先添加一个配置文件,我这里的配置文件地址是/config/config_base.php


模板表单

<form class="layui-form " action="">
    <div class="layui-form-item">
        <label class="layui-form-label">
            <span class='x-red'>*</span>系统名称
        </label>
        <div class="layui-input-inline">
            <input type="text" name="site_name" value="{$Think.config.config_base.site_name}" autocomplete="off" placeholder="控制在25个字、50个字节以内"
            class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label"> 昵称 </label>
        <div class="layui-input-inline">
            <input type="text" name="nickname" value="{$Think.config.config_base.nickname}" autocomplete="off" placeholder=""
            class="layui-input" style="width: 240px;">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label"> 籍贯 </label>
        <div class="layui-input-inline">
            <input type="text" name="native_place" value="{$Think.config.config_base.native_place}" autocomplete="off" placeholder=""
            class="layui-input" style="width: 240px;">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">微信</label>
        <div class="layui-input-inline">
            <input type="text" name="wechat" value="{$Think.config.config_base.wechat}" autocomplete="off" placeholder=""
            class="layui-input" style="width: 240px;">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">QQ</label>
        <div class="layui-input-inline">
            <input type="text" name="qq" value="{$Think.config.config_base.qq}" autocomplete="off" placeholder=""
            class="layui-input" style="width: 240px;">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">Email</label>
        <div class="layui-input-inline">
            <input type="text" name="email" value="{$Think.config.config_base.email}" autocomplete="off" placeholder=""
            class="layui-input" style="width: 240px;">
        </div>
    </div>
 
    <div class="layui-form-item">
        <button class="layui-btn" lay-submit="" lay-filter="setting_base">
            保存
        </button>
    </div>
</form>


js

<script>
layui.use(['element','layer','form','upload'], function(){
    $ = layui.jquery;//jquery
    lement = layui.element;//面包导航
    layer = layui.layer;//弹出层
    upload = layui.upload;
    form = layui.form


    //监听提交
    form.on('submit(setting_base)', function(data){
        //发异步,把数据提交给php
        $.post("{:url('index')}", {'data' : data.field}, function(res){
            if(res.code == 1){
                layer.alert(res.msg, {icon: 6});
            }else{
                layer.msg(res.msg,{icon:0,time:1500,shade: 0.1});
            }
        });

        return false;
    });

})
</script>


文章来源:https://www.liqingbo.com/blog-1557.html

评论