php把提交的数据写入到配置文件中

在后台可以设置网站的基本信息,例如:title,keywords,copyright。等信息,这些信息只是一条数据,存入数据库耗费资源,直接写入到php文件中。

创建php文件。方便写入

我用的是laravel框架,在F:\project\redshop\resources\views\admin\set\system\website.blade.php,编辑website.blade.php。return一个array

<?php 

return array (

  'sitename' => 'layuiAdmin',

  'domain' => '​​https://www.woailunwen.com​​',

  'cache' => '0',

  'max_file' => '2048',

  'file_type' => 'png|gif|jpg|jpeg|zip|rar',

  'title' => 'layuiAdmin 通用后台管理模板系统',

  'keywords' => '1',

  'descript' => '网站描述',

  'copyright' => '© 2018',

);?>

后台编辑配置文件信息

小编用的是layui的后台模板,进行添加信息,代码如下:

PS:提交信息用的是layui框架自带的form.on('submit('submitSystem’)’)结合ajax提交数据。

html代码就是普通form表单,主要是js代码。

 <script src="/admin/layuiadmin/layui/layui.js"></script>

  <script src="/admin/jquery-3.2.1.js"></script>

  <script>

    $.ajaxSetup({

      headers: {

        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

      }

    });

  </script>

  <script>

  layui.config({

    base: '/admin/layuiadmin/' //静态资源所在路径

  }).extend({

    index: 'lib/index' //主入口模块

  }).use(['index', 'set']);

  </script>

  <script>

    //引用layui的模块化,需要什么就加载什么

      layui.use(['form'],function(){

         var form = layui.form

             ,layer = layui.layer;

         form.on('submit(submitSystem)',function(data){

            //layer.msg(data);//data是object。layer.msg不能输出object。否则就会报错(layer.js:2 Uncaught TypeError: s.parents is not a function)

           console.log(data);

           $.ajax({

             type:'post',

             url:'/admins/system',

             dataType:'json',

             data:data.field,

             success:function(data){

                if (data.code=='1'){

                  layer.msg(data.message,{

                    icon:1

                  });

                }else{

                  layer.msg(data.message,{

                    icon:5

                  });

                }

             },

             error:function(){

               layer.msg('网络错误,稍后再试',{

                 icon:5

               });

             }

           });

         });

      });

  </script>

controller控制器代码:

1,file_put_contents()写入配置文件。

2,config_path() 读取config路径。

public function system(Request $request){

        if ($request->isMethod('GET')){

            //显示系统设置视图

            return  view('admin.set.system.website');

        }else{

            //对系统设置进行数据处理 ​​https://www.sanweie.com​

            $values = $request->all();

            $rules = [

                'sitename'=>'required',

                'domain'=>'required',

                'cache'=>'required|integer',

                'max_file'=>'required|integer',

                'file_type'=>'required',

                'title'=>'required|max:30',

                'keywords'=>'required|max:200',

                'descript'=>'required|max:100',

                'copyright'=>'required'

            ];

            $message = [

              'sitename.required'=>'网站名称不能为空',

              'domain.required'=>'域名不能为空',

              'cache.required'=>'缓存时间不能为空',

              'cache.integer'=>'缓存必须填数字',

              'max_file.required'=>'最大上传文件不能为空',

              'max_file.integer'=>'最大上传文件必须为数字',

              'file_type.required'=>'文件类型不能为空',

              'title.required'=>'首页标题不能为空',

              'title.max'=>'标题长度必须在30字以内',

              'keywords.required'=>'网站关键字不能为空',

              'keywords.max'=>'网站关键字长度必须在200字以内',

              'descript.required'=>'描述不能为空',

              'descript.max'=>'描述长度必须在100字以内',

              'copyright.required'=>'版权信息不能为空',

            ];

            $validator = \Validator::make($values,$rules,$message);

            if ($validator->passes()){

                //配置信息写入webconfing.php文件

                //去除cache、title

                //$data = $request->except('cache','title');

                $data = $request->all();

                //写入文件中

                //var_export($data);

                $str = '<?php return '.var_export($data,true).';?>';//var_export($data)直接把$data数组输出,所以在在写入文件不会写入。所以在写入文件的时候失败。

                //写入到指定文件--webconfing.php ​​https://www.bz80.vip​

                //var_dump(config_path());打印config路径,因为webconfing.php在config配置文件夹下

                $result = file_put_contents(config_path().'/webconfing.php',$str);

                if ($result){

                    return response()->json([

                       'code'=>'1',

                       'message'=>'更新成功'

                    ]);

                }else{

                    return response()->json([

                        'code'=>'1',

                        'message'=>'更新失败'

                    ]);

                }

            }else{

                return response()->json([

                   'code'=>'0',

                   'message'=>$validator->errors()->first(),

                ]);

            }

        }

    }

通过以上的代码,就可以实现把数据写入到php文件中。