扫一扫浏览

tp5框架学习笔记总结三

未结贴
0 382
你是大佬未认证 2019-02-13 16:02:18
收藏

模板布局

第一种方式:全局配置方式

1.开启全局配置中配置
'template' => [
'layout_on' => true,
'layout_name' => 'layout',
'layout_item' => '{__REPLACE__}'  自己定
]
2. 首先会渲染 application/index/view/layout.html 模板
layout中
1 
3.适合头尾都一样的,替换原理
1 

模板路径替换

1 

调试

1.未雨绸缪 页面Trace

'app_trace'              => false,     看右下角的追踪, 看sql语句调试
Trace设置 开启 app_trace 后 有效,可以为了不挡住页面方console中
'trace'              => [
// 内置Html Console 支持扩展
'type' => 'Html',
],
在方法中可以用 trace(‘’调试内容)  来调试

2.异常页面

应用调试模式
'app_debug'              => false,    开起来可以看到错误的目录,上线务必改成false

3.断点调试

    • 就是用dump()
    • 就是用halt()   这个像exit 不会继续打印了

4.日志分析

引入   use think\Log;
1 

API接口

移动端访问和网页访问没有什么区别,只是移动端返回的一般是JSON数据
1 
平时怎么写模型,现在就怎么写。一张表对应一个模型,模型是公用的
1 

扩展(公共

在extend中新建org\util文件夹,在里面建一个类 ArrayList,然后其他地方要用就引入,命名空间不要在extend开头了.一般是和项目没什么关系的。,有关系的 use app\common\util\Myclass;
11 

驱动

一旦报错就会log::error,然后就调用配置的这个类
11 

验证码类

自己下载

composer require topthink/think-captcha

配置、验证

11 

文件上传

多图就是一个循环,如果是图片就加验证
1 

图片处理类

composer require topthink/think-image
引入下载的use think\Image;
1 

路由

为什么要路由?
1.友好SEO,SEO最多只能抓三层目录
2.安全性

定义路由两种方式

  • 第一种:在route.php文件中直接写

1 
但是这种当多个参数时,一样很长,需要改一下配置文件中的'pathinfo_depr'=> '-', 分隔符,这样就全部相当于一个页面 hello-hello-dfasd-asdf.html  打印出 Array ( [name] => hello [dfasd] => asdf );
也可以路由配置 'today/[:year]/[:month]' =>['index/index/today',['method'=>'get'],['year'=>'\d{4}','month'=>'\d{2}']],

11 

路由模式:

  • 普通模式:完全使用默认的 PATH_INFO 方式URL,平常访问显示
  • 混合模式:并使用路由定义+默认 PATH_INFO 方式的混合
  • 强制模式:url_route_on和url_route_must 都设置成true

在配置文件config中
'url_route_on' => true,  // 是否开启路由
' url_route_must' => false,  // 是否强制开启路由

    1.路由规则中 包含变量的 就是动态路由,没有包含任何变量的称为静态路由.
2.在路由文件中 return数组的 路由形式, 称之为 静态注册
3.使用Route类的方法(引入Route类) 注册的路由 称之为 动态注册(TP5.0推荐) 以上两者 可同时使用.
路由定义采用 \think\Route 类的 rule 方法注册, 通常是在应用的路由配置文件:route.php中配置
// 动态注册
// Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
//GET 一旦你对某个规则设置了路由,则之前的PATH_INFO方式访问失效
Route::get('home', 'index/index/index');
//POST 这个在url 网址中不好测试了,用老师给的一个工具Postman
Route::post('ppp', 'index/index/ppp');
//所有都通用
Route::rule('ooxx', 'index/index/index');

4.路由表达式参数
// 无参   tp5.com/user
// Route::get('user', 'index/index/user');
// 必传   tp5.com/user/156
// Route::get('user/:id', 'index/index/user');  还有可选与匹配  请参考手册

// 普通路由,只要定义了这个路径,就必须按路由的url来访问  比如 tp5.com/url
Route::get('url', 'index/index/url');
// RESTful资源路由  默认生成7个对应的资源路由
Route::resource('stu', 'admin/Stu');  //用这个定义是否用路由,定义的控制器必须用路由7个方法来操作

  • 是否自动转换URL中的控制器和操作名

'url_convert'            => false,  
URL的统一规格是全部小写,这个设置的作用就是如果你不想转化成也可以。
比如方法名是:IndexHome,在访问的url中需要写成Index_Home,否则找不到(自己写时),TP框架内不需要考虑这个问题,自动处理功能。

RESTful资源控制器

更加智能,只要你按它的方法写参数,它自己可以分辨出是什么方式,但是只能写这7个方法

1 
RESTful资源路由  默认生成7个对应的资源路由
Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

// RESTful资源路由  默认生成7个对应的资源路由
Route::resource('stu', 'admin/Stu');

    public function index()
{
// 查询数据  和之前的增删改查不会干扰,但是推荐使用这种方式
$list = Db::table('user')->field(['id', 'name'])->order(['id' => 'aes'])->select();
// var_dump($list);
1.之前查好之后放入V层的方式
// $this->assign('list', $list);
// $this->assign('title', '用户列表');
// return $this->fetch('index');  //tp5中返回到视图层  
// 助手函数  现在查好之后放入V层的方式
2助手函数
return view('Stu/index', [
'title' => '用户列表',
'list' => $list,
]);
3 判断执行情况
if ($result > 0) {
return $this->success('添加成功', url('admin/stu/index'));
return $this->redirect('/index/Index') ;
} else {
return $this->error('添加失败');
}

ajax操作删除时获取ID  
<button class="btn btn-danger btn-xs del-btn" data-id="{$v['id']}">删除</button>

<a href="{:url('Admin/Stu/index')}" class="btn btn-default">用户列表</a>
<a href="{:url('Admin/Stu/create')}" class="btn btn-default">添加页</a>

请求

  • 如果要获取当前的请求信息
  • 引入  \think\Request    类
  • 实例化 $request = Request::instance();  或者 助手函数request();
  • 取值

1 1
11 

tp5框架学习笔记总结一
tp5框架学习笔记总结二

最近热帖 HOT TOPIC
thinkphp5隐藏默认模块的一些问题 1666
【全套视频】thinkphp5视频教程 1555
父元素flex之后,子元素高度自适应问题 1539
教你如果处理高并发数据不同步的问题php篇 1373
关于thinkphp5.0.x getshell漏洞的说明 1277
tpframe新建主题 1269
tpframe安装教程 1268
TPFrame框架robot模块重磅来袭,内附2.1版本 1258
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 1217
tpframe应用目录结构 1185
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 3
thinkphp5自动完成操作,两次运行的详解 2
tpframe-curd操作之添加数据 2
tpframe能带给你的,让你快速搞定各服务端(api,pc,mobile,wechat)代码的框架 2
爆料早知道:TPFrame v3.2版本已更新我有好想法