ThinkPHP学习笔记
从早期的tp3.2到tp5与tp6等
刘远山
日积月累
展开
-
Thinkphp6验证码使用
1、开启全局session打开app/middleware.php文件,将\think\middleware\SessionInit::class 注释去掉就可以了2、前端显示验证码<div>{:captcha_img()}</div>3、检查验证码是否正确$captcha = new Captcha(); if(!$captcha::check($data['captcha'])){ $ret= ['msg'=>'验证码输入原创 2020-10-20 00:35:40 · 1184 阅读 · 0 评论 -
Thinkphp6中自定义多应用的异常接管
多应用的异常接管1、复制app应用目录下的provider.php文件到指定应用下,这里以admin应用为例,修改绑定模块,如下:<?phpuse app\ExceptionHandle;use app\Request;// 容器Provider定义文件return [ 'think\Request' => Request::class, 'think\exception\Handle' => '\\app\\admin\\Http',];原创 2020-10-19 22:06:19 · 976 阅读 · 1 评论 -
配置Ngix支持pathinfo模式
环境:windows10phpstudythinkphp6配置虚拟主机:修改文件路径:D:\phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts加入该段代码if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s/$1 last; rewrite ^/(.*)$ /index.php?s/$1 last;原创 2020-08-16 13:44:45 · 146 阅读 · 0 评论 -
phpspreadsheet读取Excel表格数据
//引入类use PhpOffice\PhpSpreadsheet\IOFactory;/** * Excel导入 * @param $inputfile string EXCEL路径 ./upload/supplement_order/xlsx_ledge/5025-补单导入模板0721.xlsx * @return array */ function getExcelData($inputfile) { //根据类型创建合适的读取原创 2020-07-26 10:12:59 · 1416 阅读 · 0 评论 -
phpspreadsheet生成Excel表格
参看文档https://www.cnblogs.com/zx-admin/p/11653863.htmlhttps://blog.csdn.net/baidu_31950961/article/details/90692098https://www.cnblogs.com/doseoer/p/11041856.html//使用Spreadsheet类use PhpOffice\PhpSpreadsheet\Spreadsheet;//xlsx格式类use PhpOffice\PhpSprea原创 2020-07-06 18:24:56 · 1187 阅读 · 0 评论 -
Thinkphp用户模块接口
用户增删改查功能接口<?phpnamespace app\admin\controller;class User extends Error{ /** * @api {post} /admin/user/list 后台用户列表接口 * * @param int page null * @param string username null * * @return array *原创 2020-06-21 16:17:40 · 290 阅读 · 0 评论 -
Thinkphp5.1定义空操作
1.创建一个错误文件Error.phpD:\phpstudy_pro\WWW\myvue\api\application\index\controller\Error.php2.当访问一个不存在的控制器是触发空操作<?phpnamespace app\index\controller;use think\Controller;use think\facade\Request;class Error extends Controller{ public function in原创 2020-06-14 19:00:45 · 297 阅读 · 0 评论 -
Thinkphp设置接口返回格式为JSON
1、设置json格式D:\phpstudy_pro\WWW\myvue\api\config\app.php//修改数据格式 // 默认输出类型 'default_return_type' => 'json',//增加这段 // 是否返回json规范的格式 'api_return_standard' => true,2、在核心json类中设置D:\phpstudy_pro\WWW\myvue\api\thinkphp\library\th原创 2020-06-14 18:35:10 · 4225 阅读 · 0 评论 -
ThinkPHP中使用ZipArchive 生成压缩包
压缩多个文件压缩多个文件,其实就是addFile执行多次,可以通过数组的遍历来实现。实现同一个目录下将多个文件压缩成一个zip压缩包封装压缩文件函数//压缩文件成zip格式 function createZipFiles($pathArr,$zipName) { $zip = new \ZipArchive(); if($zip->open($zipName,\ZipArchive::CREATE|\ZipArchive::OVERWRITE))原创 2020-06-14 16:00:07 · 1001 阅读 · 0 评论 -
option的默认选中与thinkphp中<eq>标签的使用
今天做项目是用到了tp的标签想把用法和大家分享一下首先说清楚public function analysis(){$query = [];$shop = Db::name(‘shops’)->field(‘id,shop_name’)->where(‘shopStatus=1’)->select();//店铺this−>assign(′shop′,this-&g...转载 2020-03-17 11:37:27 · 508 阅读 · 0 评论 -
thinkphp5.1生成错误日志文件以及Evn的使用
PHP中file_put_contents函数使用参数file_put_contents追加和换行关于环境变量获取:Env::get()Thinkphp 5.1 版本取消了所有的系统常量,这些预定义常量被定义为了项目的环境变量,所以现在原来的系统路径常量改为使用think\Env类来存取,在开发中我们可以引入think\Env的门面类(think\facade\Env) /* * ...原创 2020-03-05 17:23:55 · 1070 阅读 · 0 评论 -
ThinkPHP5.1使用phpexcel第三方类库读取excel文件(读取功能)
步骤:1.判断excel类型(后缀名为.xls与.xlsx)2.读取文件(load($path))3.获取工作薄(getSheet(0))4.获取总行数(getHighestRow())5.获取总列数(getHighestColumn())6.重点理解这一步数据拼装:循环取出每个单元格的值并拼装数组(getActiveSheet()->getCell(“A2”)->getV...原创 2020-02-28 17:22:50 · 1946 阅读 · 0 评论 -
ThinkPHP5.1使用phpexcel第三方类库生成excel文件(导出功能)
PHP版本要求为5.6,不支持PHP7+,遇到的错误,是因为php版本太高,PHP7+的不支持,只好换到5.6的版本在https://packagist.org/搜索 phpoffice1.进行composer安装如果composer之前设置了国内镜像需要解除镜象:如果需要解除镜像并恢复到 packagist 官方源,请执行以下命令:composer config -g --uns...原创 2020-02-26 21:31:13 · 1068 阅读 · 0 评论 -
评论功能实现---ajax方式将数据序列化后get传到后端以及表单序列化拼接
前端代码{//添加表单评论功能} <h4>发表评论</h4> <form class="form-horizontal" id="comment"> <input type="hidden" name="article_id" value="{$art.id}"> &l...原创 2020-02-23 23:23:15 · 320 阅读 · 0 评论 -
前端模板将获取的时间戳转日期格格式,公共函数的使用
前端代码 <p>{$comment.user_id|getUserName} {$comment.create_time|date='Y年m月d日'}</p>公共函数代码 common.php//公共函数库的使用 根据用户主键查询用户名称use think\Db;//当函数存在的时候创建该函数i...原创 2020-02-23 23:09:29 · 173 阅读 · 0 评论 -
站点配置管理_4---eq高亮选中第一行,bs徽章的使用文章阅读数
功能点:1.遍历循环后高亮显示第一行2.文章阅读数的显示,在boostrp是在组件里的徽章Base.php公共基础控制器代码//初始化 protected function initialize() { $this->showNav(); //检测网站是否关闭 $this->is_open(); //获...原创 2020-02-22 00:35:23 · 158 阅读 · 0 评论 -
站点配置管理_3---关闭注册功能
公共控制器代码 //检测注册功能是否关闭 public function is_register() { //1.当前注册状态 $isReg = Site::where('status',1)->value('is_register'); //2.如果已经关闭,直接跳转到首页 if($isReg ==0){ ...原创 2020-02-22 00:08:02 · 2574 阅读 · 0 评论 -
站点配置管理_2---关闭前台显示设置
Base公共控制器的设置 protected function initialize() { $this->showNav(); //检测网站是否关闭 $this->is_open(); } //检测站点是否关闭 public function is_open() { //1...原创 2020-02-21 23:43:34 · 203 阅读 · 0 评论 -
站点配置管理_1---配置页数据获取与显示
site表设计CREATE TABLE "zh_site" ( "id" int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', "name" varchar(255) DEFAULT NULL COMMENT '站点名称', "keywords" varchar(200) DEFAULT NULL COMMENT '关键字',...原创 2020-02-21 22:38:08 · 270 阅读 · 0 评论 -
文章删除功能的实现--对于循环列表获取单条数据的删除
控制器代码//执行文章的删除操作 public function doDelete() { //1.获取要删除的主键ID $id = Request::param('id'); //2.执行删除 if(ArtModel::where('id',$id)->delete()){ retur...原创 2020-02-19 11:32:04 · 175 阅读 · 0 评论 -
文章编辑--包含文件上传与保存
文章编辑控制器代码//渲染编辑文章的页面 public function artEdit() { //1.获取到分类的id $artId = Request::param('id'); //2.根据主键查询要更新的文章信息 $artInfo = ArtModel::where('id',$artId)->fin...原创 2020-02-19 10:54:59 · 237 阅读 · 0 评论 -
文章列表与分页
article表结构CREATE TABLE "zh_article" ( "id" int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', "title_img" varchar(200) DEFAULT NULL COMMENT '标题图片', "is_hot" int(4) DEFAULT '0' COMMENT '是否热门...原创 2020-02-18 23:46:28 · 382 阅读 · 0 评论 -
文章分类添加操作
跳转新增文章分类按钮代码<!--添加分类操作--><a class="btn btn-info" href="{:url('cate/cateAdd')}" role="button">添加分类</a>文章分类添加控制代码 //渲染添加界面 public function cateAdd() { return $thi...原创 2020-02-18 18:20:51 · 300 阅读 · 0 评论 -
分类权限与列表管理
分类表设计CREATE TABLE "zh_article_category" ( "id" int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', "user_id" int(11) DEFAULT NULL COMMENT '用户主键', "name" varchar(30) DEFAULT NULL COMMENT '栏目名...原创 2020-02-18 16:39:00 · 468 阅读 · 0 评论 -
onclick事件的传值 然后去执行ajax请求,以及form表单采用ajax的注意地方
//这里需要禁用a链接方法一:href="javascript: ;" 或者方法二:return false<td><a href="javascript:;" onclick="dele();return false">删除</a></td>//ajax 无刷新提交数据时form便签需要加上属性οnsubmit="return false"...原创 2020-02-17 23:31:01 · 1204 阅读 · 0 评论 -
用户删除功能---仅超级管理员具有该权限
user.php控制器代码//执行用户的删除操作 public function doDelete() { //1.获取要删除的主键ID $id = Request::param('id'); //2.执行删除 if(UserModel::where('id',$id)->delete()){ ...原创 2020-02-17 23:13:58 · 1836 阅读 · 0 评论 -
编辑用户操作---用于修改用户信息
user.php控制器代码 //渲染编辑用户的界面 public function userEdit() { //1.获取要更新的用户的主键 $userId = Request::param('id'); //2.根据组件进行查询 $userInfo = UserModel::where('id',$userId)-...原创 2020-02-17 22:14:09 · 1509 阅读 · 0 评论 -
用户列表与权限控制
user.php控制器代码<?phpnamespace app\admin\controller;use app\admin\common\controller\Base;use app\admin\common\model\User as UserModel;use think\facade\Request;use think\facade\Session;class U...原创 2020-02-17 18:26:03 · 781 阅读 · 0 评论 -
前端模板标签eq与neq的使用,以及管理系统模块权限控制
在超级管理员登录情况下显示1.当前登录用户只能修改自己2.超级管理员admin拥有查看普通用户和删除其他用户的权限,但删除不了自己{volist name="userList" id="user" empty="$empty"} <tr> <td>{$user.id}</td> <td>{$user.na...原创 2020-02-17 18:12:10 · 945 阅读 · 0 评论 -
assign模板赋值中,赋值数据为空时的友好提示,避免报错
$this->view->assign('empty','<span style="color: red;">没有任何数据</span>');原创 2020-02-17 17:16:06 · 1040 阅读 · 0 评论 -
后台退出登录功能
1.清除session 2.退出登录并跳转到登录页面 //退出登录 public function logout() { //1.清除session Session::clear(); //2.退出登录并跳转到登录页面 $this->success('退出成功','admin/user/login'); ...原创 2020-02-17 16:35:42 · 1788 阅读 · 0 评论 -
后台模板布局
加载写好的模板布局文件,也就是模板布局的使用index.html{layout name="public:layout" /}<!--我现在在这里写的任何内容,都会自动的把布局文件中的{__CONTENT__}进行替换-->1111layout.html模板文件<!DOCTYPE html><html lang="en"><head>...原创 2020-02-17 16:28:33 · 229 阅读 · 0 评论 -
管理员登录功能--了解栅格系统设计、管理员登录
user.php控制器的代码<?phpnamespace app\admin\controller;use app\admin\common\controller\Base;use app\admin\common\model\User as UserModel;use think\facade\Request;use think\facade\Session;class ...原创 2020-02-17 12:31:11 · 578 阅读 · 0 评论 -
后台入口设计---用户在为登录情况下不允许进入后台index
后台公共模块代码<?php/** * 后台公共控制器 */namespace app\admin\common\controller;use think\Controller;use think\facade\Session;class Base extends Controller{ //初始化方法 protected function initiali...原创 2020-02-17 11:40:13 · 372 阅读 · 0 评论 -
入口文件与模块自动绑定---http://localhost/zh/public/admin.php
开启自动绑定模块 // 入口自动绑定模块 'auto_bind_module' => true,创建入口文件admin.php,如果创建的是api模块,则入口文件为api.php<?php// +----------------------------------------------------------------------// | ...原创 2020-02-17 10:48:55 · 374 阅读 · 0 评论 -
Ajax实现收藏功能--数据库链式操作、js的元素属性改变 attr
判断是否是ajax传输需要判断用户需要处于登录状态如果是收藏,需要依据’user_id’和’article_id’将数据插入表中如果是取消,需要依据’user_id’和’article_id’将数据删除表设计结构CREATE TABLE "zh_user_fav" ( "id" int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键'...原创 2020-02-17 00:39:02 · 371 阅读 · 0 评论 -
制作详情页---用到了公共函数调用和pathinfo参数的获取
控制器代码 //文章详情页 public function detail() { //获取pathinfo的id $artId = Request::param('id'); //设置pv阅读量的增加 $art = Article::get(function($query) use ($artId){ ...原创 2020-02-16 21:06:12 · 229 阅读 · 0 评论 -
path info方式传递与get方式传递参数的获取方式
path info方式传递参数获取$artId = Request::param('id');$artId = Request::get('keywords');原创 2020-02-16 20:40:48 · 781 阅读 · 0 评论 -
数据库-链式操作查询条件的使用
//设置全局条件查询 $map = [];//将所有的查询条件封装到这个数组 //条件1 $map[] = ['status','=',1];//这里的等号不能省略 //实现搜索功能 $keywords = Request::param('keywords'); if(!empty($keyword...原创 2020-02-16 18:55:09 · 756 阅读 · 0 评论 -
搜索功能的实现
搜索功能还是存在bug,在搜索后点击下一也又变成了全文搜索//首页方法 public function index() { //设置全局条件查询 $map = [];//将所有的查询条件封装到这个数组 //条件1 $map[] = ['status','=',1];//这里的等号不能省略 //实现搜索...原创 2020-02-16 18:46:34 · 955 阅读 · 0 评论