
Thinkphp框架
文章平均质量分 64
徊忆羽菲
追求健康的人
展开
-
thinkphp6路由地址详解
thinkphp6路由地址详解路由地址路由到控制器/操作控制器/操作路由地址路由地址表示定义的路由表达式最终需要路由到的实际地址(或者响应对象)以及一些需要的额外参数,支持下面几种方式定义:路由到控制器/操作这是最常用的一种路由方式,把满足条件的路由规则路由到相关的控制器和操作,然后由系统调度执行相关的操作,格式为:控制器/操作解析规则是从操作开始解析,然后解析控制器,例如:路由代码:// 路由到qipa控制器Route::get('qipa/:id','qipa/read');Qip原创 2021-05-14 15:22:10 · 719 阅读 · 0 评论 -
thinkphp6注解路由的使用方法
thinkphp6注解路由的使用方法注解路由注解路由ThinkPHP支持使用注解方式定义路由(也称为注解路由),如果需要使用注解路由需要安装额外的扩展:composer require topthink/think-annotation然后只需要直接在控制器类的方法注释中定义,例如:<?phpnamespace app\controller;use think\annotation\Route;class Index{ /** * @param strin原创 2021-04-24 20:51:03 · 1721 阅读 · 0 评论 -
thinkphp6资源路由使用方法整理
thinkphp6资源路由使用方法整理资源路由资源嵌套资源路由支持设置RESTFul请求的资源路由,方式如下:Route::resource('blog', 'Blog');表示注册了一个名称为blog的资源路由到Blog控制器,系统会自动注册7个路由规则,如下:标识请求类型生成路由规则对应操作方法(默认)indexGETblogindexcreateGETblog/createcreatesavePOSTblogsavereadGE原创 2021-04-24 19:39:06 · 1297 阅读 · 0 评论 -
thinkphp6路由分组介绍
thinkphp6路由分组介绍什么是路由分组路由分组支持嵌套prefix方法简化相同路由地址定义路由完全匹配completeMatch函数延迟路由解析路由规则合并解析传入额外参数什么是路由分组路由分组功能允许把相同前缀的路由定义合并分组,这样可以简化路由定义,并且提高路由匹配的效率,不必每次都去遍历完整的路由规则(尤其是开启了路由延迟解析后性能更佳)。使用Route类的group方法进行注册,给分组路由定义一些公用的路由设置参数,例如:Route::group('qipa', function ()原创 2021-04-24 19:31:49 · 1942 阅读 · 0 评论 -
thinkphp6路由闭包和参数详解
thinkphp6路由闭包和参数详解路由闭包参数传递路由参数URL后缀域名检测HTTPS检测请求缓存动态参数中间件路由闭包我们可以使用闭包的方式定义一些特殊需求的路由,而不需要执行控制器的操作方法了,例如:Route::get('read',function (){ return 'www.qipa250.com';});参数传递闭包定义的时候支持参数传递,例如:Route::get('read/:city', function ($city) { return 'Welc原创 2021-04-18 22:32:14 · 1031 阅读 · 0 评论 -
thinkphp6路由器详解
thinkphp6路由器详解路由配置文件注册路由到控制器中到方法定义路由请求为get或post路由规则设置可选参数完全匹配额外参数路由标识name路由设置变量规则局部变量规则全局变量规则组合变量动态路由路由到控制器action变量值作为操作方法传入路由到指定类到指定方法中路由跳转路由到模版文件路由配置文件所有的路由规则都在这个文件中配置注册路由到控制器中到方法在路由文件中定义规则// 路由到Qipa控制器 ,且定义变量名称为id,在控制器read方法中接受时需保持一致Route::rule('原创 2021-04-18 13:44:22 · 1213 阅读 · 0 评论 -
thinkphp6路由器定义和使用方法整理
thinkphp6路由器定义和使用方法整理路由配置文件路由定义注册路由规则表达式可选变量完全匹配额外参数路由标识强制路由路由配置文件thinkphp6的安装目录中的route下的app.php文件路由定义要使用Route类注册路由必须首先在路由定义文件开头添加引用use think\facade\Route;注册路由最基础的路由定义方法是:Route::rule(‘路由表达式’, ‘路由地址’, ‘请求类型’);例如注册如下路由规则(假设为单应用模式):// 注册路由到New原创 2021-03-21 15:21:30 · 982 阅读 · 0 评论 -
thinkphp6事件监听和触发多个事件
thinkphp6事件订阅,监听多个事件创建一个事件类创建一个监听类修改配置文件确定触发事件创建一个事件类 php think make:event User<?phpnamespace app\event;class User{ public function __construct() { echo '<br>我是用户的登陆事件构造函数<br>'; } public function login原创 2021-03-14 16:06:18 · 1367 阅读 · 0 评论 -
thinkphp6框架middleware中间件的定义和使用方法示例
thinkphp6框架middleware中间件的定义和使用方法示例中间件定义中间件配置中间件前置/后置中间件前置行为的中间件后置行为的中间件中间件中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。定义中间件php think make:middleware Check中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。中间件handle方法的返回值必须是一个Response对象。当前thinkpghp6的目录结构为多原创 2021-03-14 14:53:47 · 4917 阅读 · 0 评论 -
thinkphp6框架facede门面的定义和使用方法示例
thinkphp6框架facede门面的定义和使用方法示例门面(Facade)核心Facade类库门面(Facade)门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。静态方式调用非静态方法时隐式的实例化了该类,无需我们做额外的实例化工作系统已经为大部分核心类库定义了Facade,所以你可以通过Facade来访问这些系统类,当然也可以为你的应用类库添加静态代理。下面是一个示例,假如我们定义了原创 2021-03-14 14:09:13 · 1346 阅读 · 0 评论 -
thinkphp6系统服务的定义和使用方法
thinkphp6系统服务的定义和使用方法系统服务服务定义注册方法启动方法服务注册系统服务系统服务的概念是指在执行框架的某些组件或者功能的时候需要依赖的一些基础服务,服务类通常可以继承系统的think\Service类,但并不强制(如果继承think\Service的话可以直接调用this->app获取应用实例)。你可以在系统服务中注册一个对象到容器,或者对某些对象进行相关的依赖注入。由于系统服务的执行优先级问题,可以确保相关组件在执行的时候已经完成相关依赖注入。服务定义可以通过命令行生成一原创 2021-03-14 13:54:50 · 2475 阅读 · 2 评论 -
thinkphp6读取配置文件中环境变量定义的方法
thinkphp6读取配置文件中环境变量定义的方法env配置定义及获取配置定义格式:env( 环境变量定义)的获取配置文件中使用环境变量配置文件的配置获取参数批量设置env配置定义及获取1.其中两项配置app_debug、config_ext只在.env生效 参见开启调试模式及代码跟踪器2.除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。配置定义格式:APP_DEBUG = true;数据库配置项[DATABASE]TYPE = mysqlHOSTNAME原创 2021-03-14 12:56:21 · 3140 阅读 · 0 评论 -
thinkphp6.0框架(TP6)如何开启调试模式
thinkphp6.0框架(TP6)如何开启调试模式报错抛出异常开启调试模式报错抛出异常 public function getenv() { //获取系统环境变量的配置信息 echo echo 'qipa250_lang='.Env::get('lang.qipa250_lang','qipa250'); echo '<br>'; echo 'default_lang='.Env::get('原创 2021-03-14 12:41:51 · 6186 阅读 · 1 评论 -
thinkphp6开启多应用模式
thinkphp6开启多应用模式修改配置文件修改app目录修改配置文件将auto_multi_app 的false改成true 如下: // 自动多应用模式 'auto_multi_app' => true,修改app目录新建两个目录,admin和index目录 可以区分开前后台将原有的controller目录和BaseController.php文件分别赋值到admin和index目录中修改对应的admin控制器中的Index.php文件内容<?php原创 2021-03-13 14:18:43 · 966 阅读 · 0 评论 -
thinkphp6目录结构
thinkphp6目录结构简介单应用模式多应用模式默认应用文件简介相对于5.1来说,6.0版本目录结构的主要变化是核心框架纳入vendor目录,然后原来的application目录变成app目录。6.0支持多应用模式部署,所以实际的目录结构取决于你采用的是单应用还是多应用模式,分别说明如下。单应用模式默认安装后的目录结构就是一个单应用模式www WEB部署目录(或者子目录)├─app 应用目录│ ├─controller 控制器目录│ ├─model原创 2021-03-13 13:53:57 · 2599 阅读 · 2 评论 -
thinkphp6的安装与部署
thinkphp6的安装与部署环境要求安装Composer安装稳定版安装开发版开启调试模式修改nginx配置文件环境要求PHP >= 7.1.0安装Composer6.0版本开始,必须通过Composer方式安装和更新,所以你无法通过Git下载安装。curl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composer我们建议使用国内镜像(阿里云)composer config原创 2021-03-13 13:43:35 · 2842 阅读 · 0 评论 -
自定义thinkphp6的分页样式
自定义thinkphp6的分页样式需要到框架中的\vendor\topthink\think-orm\src\paginator\driver\Bootstrap.php文件下修改根据自己需要的css样式进行修改原创 2021-03-12 18:24:15 · 552 阅读 · 0 评论 -
怎么查看当前使用的thinkphp对应的版本号
怎么看thinkphp版本号在控制器中查看版本号命令号模式查看当前框架版本查看程序的具体版本号有三种方法在控制器中查看版本号保存文件,在浏览器查看打印结果命令号模式查看当前框架版本...原创 2021-03-12 18:04:12 · 2531 阅读 · 0 评论 -
thinkphp5报错Call to undefined method app\index\controller\Index::fetch()解决方案
thinkphp5报错Call to undefined method app\index\controller\Index::fetch解决方案会出现如下报错:Call to undefined method app\index\controller\Index::fetch()其实就是没找到fetch属性,其实默认是有这个属性的。只是你没有使用罢了。需要先使用Controller然后继承。 如下所示:<?phpnamespace app\index\controller;use t原创 2021-02-27 14:12:28 · 4655 阅读 · 0 评论 -
thinkphp5给文本编辑器ueditor图片上传的路径增加网址
thinkphp5给文本编辑器ueditor图片上传的路径增加网址1、找到上传图片类修改控制器定义域名修改getFileInfo 方法验证1、找到上传图片类在thinkphpwu\public\static\hadmin\lib\ueditor\1.4.3\php中Uploader.class.php 类查找getFileInfo方法 /** * 获取当前上传成功文件的各项信息 * @return array */ public function get原创 2021-01-09 18:05:40 · 503 阅读 · 0 评论 -
学习thinkphp5常用api异常类ApiException的封装
学习thinkphp5常用api异常类ApiException的封装封装ApiException.php异常类调用异常类抛出异常封装ApiException.php异常类<?phpnamespace app\common\lib\exception;//引用异常类use think\Exception;//继承异常类class ApiException extends Exception{ //自定义http状态码 public $message = '';原创 2021-01-09 17:48:40 · 689 阅读 · 0 评论 -
学习thinkphp5文章详情页面接口开发
学习thinkphp5文章详情页面接口开发接口请求的控制器postman请求测试接口请求的控制器<?phpnamespace app\api\controller;use app\api\controller\Common;use app\common\lib\exception\ApiException;class News extends Common{ /** * 获取详情接口 */ public function read()原创 2021-01-09 17:44:18 · 287 阅读 · 0 评论 -
学习thinkphp5返回App文章列表页面支持关键词搜索、分页、分类api接口整理
学习thinkphp5返回App列表页面支持关键词搜索、分页、分类api接口整理封装常用函数common后台创建文章控制器公共控制器方法常用config公共配置文件model层配置对应方法配置访问文章列表的路由postman请求测试1、不传任何参数get请求2、传入类型catid3、传入分页4、传入标题title搜索5、分类、分页、数量、标题封装常用函数commoncommon.php<?php// 应用公共文件function pagination($obj){ if (原创 2021-01-09 17:39:59 · 737 阅读 · 0 评论 -
学习thinkphp中api接口客户端和服务端时间一致性解决方案
学习thinkphp中api接口客户端和服务端时间一致性解决方案背景解决方案1、新建Time时间控制器2、修改route路由3、postman发送get请求背景客户端(app、小程序)等和服务端的时间不一致的问题解决方案1、新建Time时间控制器<?phpnamespace app\api\controller;use think\Controller;class Time extends Controller{ public function index()原创 2021-01-03 17:38:59 · 422 阅读 · 0 评论 -
学习thinkphp中api接口数据安全解决方案之授权sign唯一性支持
学习thinkphp中api接口数据安全解决方案之授权sign唯一性支持背景结合redis缓存Api签名校验类ApiAuthapp配置postman请求背景为了保证客户端的每一次请求sign的唯一性,且只能使用一次,所以我们就需要在代码中去判断每次提交的sign是否唯一结合redis缓存引用redis缓存use think\cache\driver\Redis;api模块的控制器公共类 Common.php<?phpnamespace app\api\controller;原创 2021-01-03 17:25:48 · 899 阅读 · 1 评论 -
学习thinkphp中api接口数据安全解决方案之sign有效时间处理
学习thinkphp中api接口数据安全解决方案之sign有效时间处理生成13位时间戳生成sign签名设置sign签名有效期校验sign时间有效期引用签名验证类生成13位时间戳在Y:\thinkphpwu\application\common\lib 目录中创建 Time.php 类<?phpnamespace app\common\lib;class Time{ //获取到13位数的时间戳 13位时间戳是把时间精确到毫秒级,所以两者是1000倍的关系 public原创 2021-01-03 16:48:11 · 782 阅读 · 1 评论 -
thinkphp中api接口数据安全解决方案之sign检验
thinkphp中api接口数据安全解决方案之sign检验封装校验方法调用校验方法抛出异常类ApiExceptionapp.php配置文件封装校验方法<?phpnamespace app\common\lib;use app\common\lib\Aes;class ApiAuth{ /* * 生成签名 */ public static function setSign($data = []) { //1 把数组按照字段原创 2021-01-03 15:56:25 · 1385 阅读 · 2 评论 -
PHP7.2中基于thinkphp框架封装AES加密解密方法mcrypt_module_open()替换方案
PHP7.2中AES加密解密方法mcrypt_module_open替换方案前言封装Aes加密解密类测试加密解密前言php的mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt,如果是新项目,还是使用 openssl_decrypt 来代替 mcrypt_encrypt 来做双向加密解密吧封装Aes加密解密类我用原创 2021-01-03 14:49:43 · 1772 阅读 · 0 评论 -
学习thinkphp5不可预知的内部异常api数据输出解决方案
学习thinkphp5不可预知的内部异常api数据输出解决方案原报错异常封装报错异常类1、创建文件ApiHandleException.php2、修改config.php配置postman测试原报错异常在save 方法中创造一个报错,如下,无data变量,但是echo, //post 需要定义$id public function save() { echo $data; $post_data = input('post.');原创 2021-01-02 18:14:15 · 805 阅读 · 3 评论 -
整理总结thinkphp5如何使用restful
整理总结thinkphp5如何使用restful创建api目录在api目录中创建控制器和配置文件api的test控制器config.php中配置返回格式设置路由自动注册路由规则单独设置路由get方式请求put方式请求delete方式请求post方式请求创建api目录在api目录中创建控制器和配置文件如下图:api的test控制器<?phpnamespace app\api\controller;use think\Controller;class Test extends原创 2021-01-02 17:28:52 · 867 阅读 · 0 评论 -
thinkphp5框架结合ajax异步交互修改状态非物理删除的方法
thinkphp5框架结合ajax异步交互修改状态非物理删除的方法封装js删除方法视图html文件引用base基类创建delete方法效果展示封装js删除方法在thinkphpwu/public/static/admin/js 创建common.js/** * 通用化删除操作 * @param obj */function app_del(obj) { alert("dianji"); // 获取模板当中的url地址 url = $(obj).attr('del_原创 2020-12-20 17:20:59 · 211 阅读 · 0 评论 -
thinkphp5实现列表展示、引入laypage分页、支持模糊搜索功能
thinkphp5实现列表展示、引入laypage分页、支持模糊搜索功能列表页html展示控制器controllermodel层模糊搜索功能列表页html展示{include file='public/_meta'}<title>资讯列表</title></head><body><nav class="breadcrumb"> <i class="Hui-iconfont"></i>原创 2020-12-20 16:43:13 · 255 阅读 · 0 评论 -
thinkphp5框架中在model层打印sql语句的方法
thinkphp5框架中在model层打印sql语句的方法model层model层<?phpnamespace app\common\model;use think\Model;use app\common\model\Base;class News extends Base{ /** * 后台自动化分页 * @param array $data */ public function getNews($data = []) {原创 2020-12-20 15:34:39 · 1985 阅读 · 1 评论 -
thinkphp5分页中字段(如:status状态、category分类)调用公用方法返回对应值的代码示例
thinkphp5分页中字段调用公用方法返回对应值的代码示例静态页面封装公共配置文件创建公共方法静态页调用公共方法实现效果图静态页面{volist name="news" id="v"} <tr class="text-c"> <td><input type="checkbox" value="" name=""></td> <td>{$v.id}</原创 2020-12-20 15:32:38 · 400 阅读 · 1 评论 -
thinkphp5 报错致命错误: Call to a member function appends() 解决方案
thinkphp5 报错致命错误: Call to a member function appends 解决方案分析分页逻辑解决方案分析分页逻辑model层查询分页的方法 public function getNews($condition) { $order = ['id' => 'desc']; // 查询 $result = $this->where($condition)原创 2020-12-20 15:16:02 · 1289 阅读 · 0 评论 -
thinkphp5框架分页默认条数修改
thinkphp5框架分页默认条数修改修改配置文件修改配置文件在thinkphpwu/application目录下的config.php文件中,找到paginate 数组,修改list_rows=15表示,每页显示15条,我们可以根据自己的需求修改为5原创 2020-12-20 14:31:13 · 836 阅读 · 0 评论 -
thinkphp5中套H-ui.admin模板页面时出现的问题:Call to undefined function %y-%M-%d()解决方案
thinkphp5中套H-ui.admin模板页面时出现的问题:Call to undefined function %y-%M-%d解决方案报错如下原有html模板代码解决办法报错如下原有html模板代码<input type="text" onfocus="WdatePicker({ maxDate:'#F{$dp.$D(\'datemax\')||\'%y-%M-%d\'}' })" id="datemin" class="input-text Wdate" style="width:1原创 2020-12-15 10:24:24 · 347 阅读 · 0 评论 -
thinkphp5读取linux系统配置的环境变量的方法
thinkphp5读取系统配置的环境变量的方法配置系统环境变量修改nginx服务thinkphp配置文件修改thinkphp调用的base.php基类测试环境变量配置系统环境变量vim /etc/profile 在末尾增加export MDZ_ENV=local使其生效source /etc/profile修改nginx服务thinkphp配置文件vim /usr/local/nginx/conf/conf.d/thinkphpwu.conf增加fastcgi_param原创 2020-12-14 17:05:55 · 674 阅读 · 0 评论 -
thinkphp5针对model层模型-独立配置数据库连接,实现连接多个数据库的方法
超简单thinkphp5针对model层模型-独立配置数据库连接,实现链接多个数据库的方法,实现了thinkphp5不同model层连接不同的数据库功能原创 2020-12-14 16:44:38 · 1967 阅读 · 0 评论 -
thinkphp登录后台权限控制功能的实现代码
thinkphp登录后台权限控制功能的实现代码创建基类Base后台相关控制器继承Base基类登录后台login控制器创建基类Base<?phpnamespace app\admin\controller;use think\Controller;class Base extends Controller{ //初始化方法 public function _initialize() { $is_login = self::checkLogi原创 2020-12-13 17:06:40 · 653 阅读 · 0 评论