扫一扫浏览

tp5框架学习笔记总结三

未结贴
0 2870
你是大佬未认证 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
父元素flex之后,子元素高度自适应问题 5077
thinkphp5隐藏默认模块的一些问题 4740
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 4386
关于thinkphp5.0.x getshell漏洞的说明 4101
tpframe新建主题 4070
教你如果处理高并发数据不同步的问题php篇 4057
移动web资源整理,你值得收藏的干货 3926
【全套视频】thinkphp5视频教程 3905
omnicore rpc api中文手册【usdt】 3877
2018最新版PHP视频教程-ThinkPHP5商城系统+项目实战 3763
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
权限那里怎么一登录别的账号就报错啊 9
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
tpframe6.0马上就要跟大家见面了,一次全新的升级 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2