一、引入
无论平时我们自己制作,还是浏览别人的网站,它都具有其相应的一些共用的、通用的属性,比如:网站的名字,关键字、备案号、分页数量、是否开启缓存等信息。一些网站可能将配置项写死在后台,无法动态更新,便会出现字段可能太多有些我们不会使用;也许会出现字段太少,不能满足我们的实际需求。今天我们要实现的功能就是要将网站后台配置项,在网站中动态添加并为其设置相应内容,使其具有很强的动态适应性、和灵活性。
二、实现思路:
在TP5中建立
1、Conf控制器类,分别创建add()、lst()、edit()、delete()、conf()等方法。
2、在view下建立conf文件夹存放需要的视图页面,add、lst、edit、conf.html等。
(1)add()方法用来添加配置项,其中中文名称、英文名称、配置类型为必填项。
/***
* 添加
*/
public function add(){
//判断是否post提交
if(request()->isPost()){
//接受数据
$data=input('post.');
// var_dump($data);die;
//验证数据
$validate=Loader::validate('conf');
if(!$validate->scene('add')->check($data)){
$this->error($validate->getError());
}
//判断有无提交值
if($data['values']){
$data['values']=str_replace(',',',',$data['values']);
}
//向数据库插入数据
$result=db('conf')->insert($data);
if($result){
$this->success('配置项添加成功!','lst');
}else{
$this->error('配置项添加失败!');
}
}
return $this->fetch();
}
2.edit()方法用来修改配置项,其中中文名称、英文名称、网站类型为必填项。
/***
* 编辑
*/
public function edit($id){
$conf=db('conf')->find($id);
if(!$conf){
$this->error('该配置项不存在!');
}
if(request()->isPost()){
$data=input('post.');
//验证提交数据
$validate=Loader::validate('conf');
if(!$validate->scene('edit')->check($data)){
$this->error($validate->getError());
}
//替换中文字符逗号
if(isset($data['type'])){
$data['type']=str_replace(',',',',$data['type']);
}
//更新
$result=db('conf')->update($data);
if($result !==false){
$this->success('配置项信息更新成功!','lst');
}else{
$this->error('配置项信息更新失败!');
}
}
$this->assign('conf',$conf);
return $this->fetch();
}
3.lst()显示后台动态添加的配置项。
/***
* 列表
*/
public function lst(){
$conf=new ConfModel();
if(request()->isPost()){
$data=input('post.');
//按照排序字段更新记录
foreach($data as $k=>$v){
$conf->update(['id'=>$k,'sort'=>$v]);
}
$this->success("配置项排序更新成功!");
}
$list=$conf->order('sort desc')->paginate(10);
$this->assign('list',$list);
return $this->fetch();
}
注意:前三个方法,只是针对配置项动态的添加、修改、显示用的。而下面的conf()方法,完成对配置项值的动态显示及修改。
4.conf()方法
conf.html源码:
{include file="common/header"}
{include file="common/sidebar"}