视图(二)
1.1、模板变量
在模板中直接使用变量对数据进行输入显示。
1.1.1、使用assign赋值数据
①创建方法赋值变量

②创建模板

③查看效果

关于模板引擎的配置项如下

1.1.2、模板赋值基本数据
①创建测试方法

②创建模板

③效果

1.1.3、模板赋值数组
①创建测试方法

②编写模板

③效果

④查看模板解析之后的结果

1.1.4、模板赋值对象
①创建方法赋值对象

②模板

③效果

1.2、系统模板变量
对于普通的模板变量需要在方法中进行赋值在模板中才能使用。对于有些数据。是属于经常使用。每次赋值就会比较麻烦。因此TP在系统运行过程中已经讲变量赋值给了模板。可以在模板中直接使用。
1.2.1、在控制器中赋值数据
①创建测试方法

②模板显示

③效果如下

1.2.2、系统模板变量的作用
- 可以显示TP或者PHP中的内置常量
- 显示PHP的超全局变量例如 $_GET、$_POST、$_REQUEST等
3、显示TP的配置信息
1.2.3、案例查看
①创建方法渲染模板

②创建模板

③效果

1.3、模板函数(重点)
1.3.1、在控制器中实现格式化
①创建方法格式化数据

②处理模板

③效果

对于此方式虽然能后正常的显示内容。但是操作麻烦因此可以使用模板函数实现格式化的操作
1.3.2、使用模板函数进行数据格式化
在模板中使用函数可以使用PHP内置的或者是TP所提供的公共函数以及自己定义的公共函数。
①创建测试方法

②创建模板

③效果如下

1.3.3、案例二将字符串转换大写
①测试方法

②编写模板

结果如下

1.3.4、模板中使用多个函数格式化处理
①修改模板

②查看效果

1.3.5、使用PHP原生写法格式化
修改模板

效果如下

1.3.6、格式化特殊写法
修改模板

效果如下

对于特殊写法使用比较多的就是在模板中使用U函数生成链接地址
1.4、模板变量默认值
当模板变量数据为空时输出的内容
①创建测试方法

②创建模板

效果如下

1.5、模板运算
模板运算即直接在模板中进行数据的加减乘除操作
1.5.1、基本运算
创建方法

创建模板

效果

1.5.2、数组的运算
在模板中对数组进行运算不在支持点语法。需要使用PHP原生的方式操作数据
- 创建方法

②创建模板d

③效果

1.6、内置标签
TP内置的模板引擎中支持很多标签需要重点的volist foreache if

1.6.1、关于标签解析的源码位置
1.6.2、foreach标签
①查看使用方式

②创建方法

③创建模板

④效果如下

1.6.3、volist标签
Volist跟foreach功能是一模一样都是为了循环数据。但是volist标签所支持的功能比foreach更加强大。除了循环数据在循环的过程中可以指定长度、偏移量、计数器等
①查看volist使用方式

②创建测试方法

- 创建模板
n


③效果如下


1.6.4、if标签
if标签作用进行判断
①查看使用方式

②创建测试方法

③模板编写

效果如下

模型
2.1、开启PDO扩展
①修改php.ini文件

②重启Apache查看phpinfo

2.2、配置数据库的连接
①创建数据库

②创建测试数据表
CREATE TABLE `tp_student` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sname` varchar(255) NOT NULL DEFAULT ” COMMENT ‘名称’,
`sage` int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘年纪’,
`sdept` varchar(255) NOT NULL DEFAULT ” COMMENT ‘班级’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
③修改配置文件

2.3、创建自定义的模型
2.3.1、自定义模型存储规则
- 存储位置:应用/模块/Model
- 文件名称:模型名称(一般模型名称对应数据表的名称)+Model.class.php
2.3.2、模型编写规则
- 申明命名空间
- 引入TP模型基类
- 编写自定义的模型
2.3.2、创建自定义模型

2.4、模型实例化
2.4.1、模型实例化的三种方式
①使用new进行实例化

结果如下

②使用M进行实例化

结果

③使用D函数实例化

结果

2.4.2、M函数使用
M函数一共有三个参数
第一个:指定具体表的名称
第二个:指定表的前缀
第三个:指定数据库的连接信息
①演示M实例化特殊名称的表
先复制一个特殊的数据表

编写代码实例化

效果如下

②演示第三个参数的使用方式
先在其他数据库下创建数据表

编写代码连接Tp5_shop数据库下的student表

效果如下

对于M函数的第三个参数可以实现跨数据库服务器、数据库进行操作
③关于M函数第三个参数的变形写法
首先配置数据库的连接

修改方法

效果如下

总结:M函数实例化模型对象永远是实例化TP模型基类的对象
2.4.3、D函数的使用
①D函数的基本使用


②实例化一个没有自定义模型的对象
复制一个tp_class数据表

编写代码

效果如下

总结:D函数会实例化自定义的模型对象。如果自定义的模型对象不存在。实例化TP模型基类的对象。如果数据表不存在报错
2.4.4、总结M跟D的区别
M实例化永远是模型基类。实例化一个不存在的数据表对应的对象时也会报错
D优先自定义的模型。如果自定义模型不存在使用模型基类进行实例化如果数据表不存在报错
D有缓存功能。再次实例化相同的模型对象。不会再次实例化
2.5、模型的CURD操作
可以通过TP模型基类中所提供的方法进行数据的增删改查
增加:模型对象->add()
删除:模型对象->delete()
修改:模型对象->save()
查询:模型对象->find/select()
2.5.1、数据增加
①创建测试

②访问测试

③查看数据库

2.5.2、数据的批量写入
数据批量写入可以使用addAll方法实现。写入数据时需要注意。数据的下标必须从0,1,2,3顺序下来。最后的返回结果为写入数据第一条的主键标识

效果如下

2.5.3、数据修改

效果如下

2.5.4、数据查询
Find:查询获取一条数据。结果为一维数组
Select:查询获取多条数据。结果为二维数组

结果如下

2.5.5、数据删除


电商案例-分类的添加
3.1、实现步骤
- 显示添加表单模板
- 创建数据表
- 接受表单的提交数据
- 接受之后写入数据库
3.2、显示商品的添加模板
①创建控制器方法显示模板

②拷贝添加的模板

③修改资源地址

3.3、创建数据表
①创建数据库

②创建分类的数据表
CREATE TABLE `shop_category` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`cname` varchar(255) NOT NULL DEFAULT ” COMMENT ‘分类名称’,
`parent_id` smallint(6) NOT NULL DEFAULT ‘0’ COMMENT ‘父分类的ID 0表示顶级’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.4、接受表单的提交数据
①修改表单提交的地址

②创建方法

③测试数据提交

3.5、实现数据入库
①配置数据库的连接

②自定义模型

③实现数据入库

3.6、实现显示表单与数据提交一个方法实现
实现此功能的关键点就是需要判断出当前的请求方式
①查看手册中的常量

②修改add方法

③修改表单的提交地址

3.7、过滤参数
①查看I函数使用方式

②修改add方法对数据进行过滤

3.8、实现可以添加子分类
①修改add能够获取已有的分类信息

②创建模型方法实现获取数据

③增加公共函数

④修改模板显示数据

