首页
时事
归档
壁纸
更多
留言
关于
邻里
Search
1
使用必应Bing每日图片做网站背景(自动)
2,987 阅读
2
vue的输入值校验规则整理
1,662 阅读
3
VUE `ERR_CONNECTION_TIMED_OUT`的解决办法
1,628 阅读
4
好站推荐-https://wangchujiang.com/linux-command/
1,598 阅读
5
微信支付开发前准备(小程序、公众号、App、H5)
1,582 阅读
文章
图说
代码
吐槽
登录
Search
标签搜索
Linux
laravel
windows
TYPO3
php
shell脚本
git
微信
好站
vue
第三方登录
centos
linxu
centos7
thinkPHP
微信支付
api
MySQL
桌面
必应首图
Beer
累计撰写
114
篇文章
累计收到
22
条评论
首页
栏目
文章
图说
代码
吐槽
页面
时事
归档
壁纸
留言
关于
邻里
搜索到
3
篇与
thinkPHP
的结果
2019-03-13
ThinkPHP5的无限级分类之思路与技巧
前言tp5对分类数据表的信息读取与展示,我们即可以控制器完成,也可以在对应的模型中完成。本案例,我们在模型中完全成。况且,对数据表的增,删改查操作,本来就是模型的本职工作。首先声明一下,我们采用递归的方式来实现无限分类。但无限分类的实现,不是只是递归一种方式,还有一种是全路径方式,也可以实现,不过,这种方式通常用在全路径导航菜单中。所以,这里我们还是用最常见的递归函数来实现:无限分类。实现方法首先我们先创建一个静态方法:getCate,为什么要静态方式,因为静态方法执行效率高,不需要实例化,而且,分类查询是使用非常频繁的操作,很多查询都要依赖分类查询的结果。当前的getCate方法,有三个参数:第一个是$pid,是父类的id,默认为0,表示从顶级开始查起。第二个参数是返回的查询结果,我们放在一个数组中返回,注意,这个变量是引入方式传入的。采用引用参数的方式,来返回结果,这也是目前主流的技术。尽管理解起来有难度,但执行效率是最高的,我们要玩,就玩大的,所以这里,我们就直接采用引用,来返回查询结果。第三个参数,可以没有,它是用来设置一下分类之间的层次显示的,可以让结果看上去更直观清晰。模型方法<?php namespace app\admin\model; use think\Collection; use think\Model; class Category extends Model { //创建一个静态方法getCate,来获取分类信息 /** * @param int $pid: 当前分类的父id * @param array $result:引用返回值 * @param int $blank:设置分类之间的显示提示 */ public static function getCate($pid=0, &$result=[], $blank=0) { //1.分类表查询:$pid $res = self::all(['pid'=>$pid]); //2.自定义分类名称前面的提示信息 $blank += 2; //3.遍历分类表 foreach ($res as $key => $value) { //3-1自定义分类名称的显示格式 $cate_name = '|--'.$value->cate_name; $value->cate_name = str_repeat(' ',$blank).$cate_name; //3-2将查询到的当前记录保存到结果$result中 $result[] = $value; //3-3关键:将当前记录的id,做为下一级分类的父id,$pid,继续递归调用本方法 self::getCate($value->id, $result, $blank); } //4.返回查询结果,调用结果集类make方法打包当前结果,转为二维数组返回 return Collection::make($result)->toArray(); } }控制器中调用代码: public function edit(Request $request) { //1.获取一下分类id $cate_id = $request -> param('id'); //2.查询要更新的数据 $cate_now = CategoryModel::get($cate_id); //3.递归查询所有的分类信息 $cate_level = CategoryModel::getCate(); //4.模板赋值 $this -> view -> assign('cate_now', $cate_now); $this -> view -> assign('cate_level', $cate_level); //5.渲染模板 return $this -> view -> fetch('category_edit'); }
2019年03月13日
615 阅读
0 评论
0 点赞
2019-03-13
thinkPHP5网站后台添加一键清除缓存功能
前言thinkPHP的缓存功能对于网站运行来说是比不可少的,但是在有些时候,特别是在做开发的时候,缓存实在是令人头疼,这边文章分享下tp5通过ajax提交达到一键清除网站缓存的功能使用方法后端PHP中在公共文件common.php中添加公共方法if (!function_exists('delete_dir_file')) { /** * 循环删除目录和文件 * @param string $dir_name * @return bool */ function delete_dir_file($dir_name) { $result = false; if(is_dir($dir_name)){ if ($handle = opendir($dir_name)) { while (false !== ($item = readdir($handle))) { if ($item != '.' && $item != '..') { if (is_dir($dir_name . DS . $item)) { delete_dir_file($dir_name . DS . $item); } else { unlink($dir_name . DS . $item); } } } closedir($handle); if (rmdir($dir_name)) { $result = true; } } } return $result; } }在controller(控制器)中添加/** * 清除缓存 */ public function clear() { if (delete_dir_file(CACHE_PATH) || delete_dir_file(TEMP_PATH)) { $this->success('清除缓存成功!'); } else { $this->error('清除缓存失败!'); } }在JavaScript中添加<script type="text/javascript"> //清除缓存 function clearPhp(obj) { var url=obj.getAttribute('data-GetUrl'); //询问框 layer.confirm('你确定要清除缓存吗?', {icon: 3, title:'提示'}, function(){ $.get(url,function(info){ if(info.code === 1){ setTimeout(function () {location.href = info.url;}, 1000); } layer.msg(info.msg,{icon:1}); }); }, function(){}); } </script>在html页面中,因为需要在任何页面都能快速清除缓存,所以我把调用代码写在了公共文件中<a href="javascript:void(0);" class="list-group-item cache" onclick="clearPhp(this)" data-GetUrl="{:url('admin/clear')}"> <div class="media"> <div class="media-img" style="color: #333;"><i class="fa fa-bolt"></i></div> <div class="media-body"> <div class="font-strong"></div>清除所有缓存<small class="text-muted float-right">删除所有 temp+cache</small> </div> </div> </a>这样下来就能达到一键清除系统缓存的目的了
2019年03月13日
565 阅读
0 评论
0 点赞
2019-03-13
thinkphp实现并表查询
thinkphp实现并表查询$list=$release->alias('a') ->join('purchase_company b','a.company_id=b.com_id','left') ->join('service_user c','c.sid=a.sid','left') ->join('service_statis d','d.type=2 and d.handle_id=a.id','left') ->join('purchase_user e','e.cid=a.cid','left') ->where(array('a.sid'=>$this->sid,'a.data'=>$data,'a.order_type'=>4)) ->field('a.id,a.order_num,a.order_type,a.up_username as fbr,FROM_UNIXTIME(a.create_time,"%Y-%m-%d %H:%i:%s") as fb_time,b.company_name,c.name as slr,FROM_UNIXTIME(d.creat_time,"%Y-%m-%d %H:%i:%s") as sl_time,e.user_name as yslr') ->page($page) ->paginate(10);心情小曲
2019年03月13日
564 阅读
0 评论
0 点赞