ThinkPHP 5.1 基础知识
==========================================
//模板中的默认标题
{$title|default='默认标题'}
==========================================
模板中的循环
{volist name='data' id='list'}
<span>{$list.id}</span>
{/volist}
===========================================
模板中的静态文件,放在/public/static/下。
模板中引用静态文件:
<script src='/static/js/jquery.js'></script>
============================================
分页:
think\db\Query.php里有个paginate方法,实现sql的分页;
$data = \app\model\Student::paginate(5);
$this->view->assign('data',$data);
return $this->view->fetch();
模板中:
<div class='text-center'>{$data|raw}</div>
===============================================
模板中的if标签:
{if $list.grade >= 60}
<span>及格</span>
{else/}
<span>不及格</span>
{/if}
=================================================
模型的命名空间:
namespace app\模块名\model;
==================================================
Phpstorm编辑器和Subline编辑器,
快速生成html标签的快捷键是:
html:5然后按tab键。
(可以是html后缀的文件,也可以是.php后缀的文件)
===================================================
//直接将内容输出到页面,不通过模板:
return $this->view->dispaly($content);
//使用视图将数据进行输出:
$this->view->assign('data',$content);
return $this->view->fetch();
=================================================
----模板布局---
在配置文件中:
'layout_on' => true,
'layout_name' => 'layout'
在模板中:
模板文件放在view目录下,例如header和footer两个文件。
{include file="header" /}
<span></span>
{include file="footer" /}
或者:
创建在view目录下,创建layout文件:
{include file="header" /}
{__CONTENT__}
{include file="footer" /}
其中__CONTENT__是文件可以替换的部分。
如果不想用__CONTENT__,可以在配置中写:
'layout_item' => '{__TEXT__}'
=================================================
h2然后tab,可以不全<h2></h2>
===================================================
---模板继承---
(1)关掉模板布局
'layout_on' => false
(2)在view下创建一个公共模板目录,public。
(3)创建公共的header和footer。
(4)然后建一个基础模板文件base:
{include file="public/header" /}
{block name="body"}
父模板内容
{/block}
{include file="public/footer" /}
(5)具体模板中的使用:
{extend name="public/base"}
{block name="body"}
{__block__} //可以把父模板中的内容也显示
<span>我是子模板页面内容</span>
{/block}
注意,block标签内的内容才会显示,标签之外的不会显示。
===========================================================
adminer是一个数据库管理工具。
========================================================
Thinkphp有两种验证方式:
(1)验证器,使用的是Validate类中的rule属性;
(2)独立验证。
======================================================
验证器:
$rule = [
'name|姓名'=>[
'require',//或者写成'require'=>'require'
'min'=>5,
'max'=>20
],
'email|邮箱'=>[
'require',
'email',
],
'pass|密码'=>[
'require',
'min'=>3,
'max'=>12,
'alphaNum',//字母和数字
],
'tel|手机号'=>[
'require',
'mobile'
]
]
if(!$validate->check($Data,$rule)){
return $validate->getError();
}
验证器就是完成框架的think\Validate类中的
属性protected $rule=[]的初始化。
验证器可以放在application下的任何一个控制器可以
访问到的位置。
==========================================================
独立验证:
使用的是验证器类think\Validate中的rule()方法;
rule()方法实际就是完成给当前类的protected $rule=[]的初始化。
Validate::rule($rule);
if(!Validate::check($data)){
return Validate::getError();
}
========================================================
独立模块配置:
(1)在config目录下,新建一个和模块名一样的目录,放配置文件;
(2)在application目录下的具体模块下,放配置文件。
=======================================================
.htaccess文件要放在应用入口文件的同级目录下,
所以tp5就是放在public目录下。
.htaccess文件只针对apache服务器有效。
=======================================================
common是公共模块,默认配置的是禁止访问的模块,
索引即使放控制器文件也不能被外部直接访问。
======================================================
以前的控制器,5.0之前的,需要继承Controller,现在的不是必须的。
============================================================
tp5.1版本默认采用多模块架构,也支持单一模块设计,即所有的模块
的命名空间均以app作为根命名空间。可通过环境变量更改。
=======================================================
_initialize并非php类中的函数,
它是由Think\Controller.class.php实现的一个构造函数方法.
在实例化父类的Controller后,如果子类中存在_initialize方法时,则执行。
此时_initialize相当于子类的构造函数。
======================================================
Tp5.1的默认访问不存在时,访问的是Error控制器。
=================================================
使用trait,可以实现多继承,用use关键字。
=================================================
分层控制器:
在控制器下再建控制器目录,
示例:
模块/controller/controller1/Index.php;
模块/controller/controller2/Index.php;
访问方法:
index/controller1.index.php
index/controller2.index.php
================================================
怎样把一个对象传入一个方法中呢?
使用依赖注入。
示例:
public function index(think\Request $request){
$request->module();//当前模块名
$request->controller();//当前控制器名
$request->action();//当前方法名
$request->file();//获取$_FILES
}
==================================================
tp5.1框架默认没有设置任何全局过滤规则,
可以在应用配置文件中设置全局的过滤规则:
// 默认全局过滤方法 用逗号分隔多个
'default_filter' => 'htmlspecialchars',
也可以在获取变量的时候添加过滤方法,例如:
Request::get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤
Request::param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤
Request::post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤
可以支持传入多个过滤规则,例如:
Request::param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤
// 获取get变量 并且不进行任何过滤 即使设置了全局过滤
Request::get('name', '', null);
// 只获取当前请求的id和name变量,避免额外变量影响数据处理和写入。
Request::only('id,name');
// 排除id和name变量
Request::except('id,name');
//支持对变量使用修饰符功能
Request::get('id/d');//强制转换为整型类型
================================================
单词:
trait 特点,特性;少许
Closure 闭合,闭包
===============================================
参数绑定:
一种是按照名称:
一种是按照顺序。
===============================================
ThinkPHP 5.1 基础知识的更多相关文章
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- vue-awesome-swiper插件爬坑
最近自己在做一个基于vue的知乎的移动端单页面,遇到很多坑,先说一下遇到最大的坑,其实并不推荐使用 vue-awesome-swiper,如果项目应用轮播,切换少的话.言归正传,现在来介绍vue-aw ...
- 洛谷 P2717 寒假作业
https://www.luogu.org/problemnew/show/P2717 $n \le 1004枚举区间,挨个计算,判断,时间复杂度$O(n^3)$. $n \le 5000$,预处理出 ...
- Voyager的Roles和Pemissions
以Page为例讲解: 取消admin的roles下Pages的Browse Pages权限: 打开web.php文件,添加: Route::get('pages', function(){ retur ...
- vue 项目白屏解决方案
在做的项目是使用 vue-cli 脚手架为基础的,只能使用微信浏览器打开的.在某次更新功能代码后,被反馈在一些手机上会出现白屏.经过一番探索,多管齐下解决了问题 白屏可能的原因: es6 代码没有被编 ...
- 用session模拟登陆,手动输入验证码
# 本练习是模拟登陆及验证码处理(把验证码下载到本地后手动输入) # 1 通过分析页面获得form表单的登陆接口为 action="https://www.douban.com/accoun ...
- LeetCode(152) Maximum Product Subarray
题目 Find the contiguous subarray within an array (containing at least one number) which has the large ...
- OpenStack, kvm, qemu-kvm以及libvirt之关系
OpenStack, kvm, qemu-kvm以及libvirt之关系: KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直 ...
- JAVA-基础(五) 更多工具集
1.StringTokenizer(字符串标记) StringTokenizer实现枚举(Enumeration)接口.因此,给定一个输 入字符串,可以使用StringTokenizer对包含于其中的 ...
- luogu1972 [SDOI2009]HH的项链
莫队裸题还不带修改 #include <algorithm> #include <iostream> #include <cstdio> #include < ...
- WordPress后台添加侧边栏菜单
add_action('admin_menu', 'register_custom_menu_page'); function register_custom_menu_page() { add_me ...