网站后台一般少不了站点配置,一种方式是写到配置文件里,第二种是写到数据库,下面以写到数据库为例
数据库表结构
DROP TABLE IF EXISTS `option`;
CREATE TABLE `option` (
`option_name` varchar(64) NOT NULL DEFAULT '' COMMENT '配置名',
`option_value` varchar(1000) COMMENT '配置值',
`option_explain` varchar(200) NOT NULL COMMENT '配置说明',
PRIMARY KEY (`option_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='全站配置表';
主键为配置名 option_name,配置值 option_value,即key-value对形式存储,其他字段根据需要自行扩充
查询配置
/**
* Notes:获取配置信息
* @auther: xxf
* Date: 2019/7/16
* Time: 17:29
* @param $key
* @return array|\Illuminate\Cache\CacheManager|mixed
*/
public static function cmf_get_option($key)
{
if (!is_string($key) || empty($key)) {
return [];
}
$optionValue = cache('options_' . $key);
if (empty($optionValue)) {
$optionValue = self::where('option_name', $key)->value('option_value');
if (!empty($optionValue)) {
cache('cmf_options_' . $key, $optionValue);
}
}
return $optionValue;
}
前端显示,修改
name="data[{$vo.option_name}]" 将表单以数组方式提交到后台
{volist name="list" id="vo" key="k"}
{$vo.option_explain}:
{/volist}
{:token()}
提交
放弃
public function editOption(Request $request)
{
$data = $request->param('data');
$opRes = $this->model->edit($data);
return showMsg($opRes['tag'],$opRes['message']);
}
public function edit($data)
{
$count = 0;
foreach ($data as $k =>$v) {
$res = $this->where('option_name',$k)->update(['option_value'=>$v]);
//$res = $this->where('option_name','aa')->update(['option_value'=>23]);
$res && $count++;
}
$validateRes['tag'] = $count > 0;
$validateRes['message'] = $count > 0 ? '成功' : '失败';
return $validateRes;
}