thinkphp笔记三.docx
《thinkphp笔记三.docx》由会员分享,可在线阅读,更多相关《thinkphp笔记三.docx(18页珍藏版)》请在冰豆网上搜索。
thinkphp笔记三
一、视图
视图分为两部分:
1)view类
2)模板文件
1、模板定义
●默认的模板文件定义规则:
模板目录/[分组名/]模块名/操作名+模板后缀
模板中的后缀由配置文件中的TMPL_TEMPLATE_SUFFIX选项来决定,可以自己修改
.html
.tpl
.htpl
2、分隔符
●'TMPL_L_DELIM'=>'<{',
●'TMPL_R_DELIM'=>'}>',
3、模板赋值
●$this->assign(“name”,$value);
$array['name'] =‘zhangsan';
$array['email'] =‘zs@';
$array['phone'] =‘12345678';
$this->assign($array);
4、模板输出
●$this->display();
display(‘操作名')
display(‘模块名:
操作名')
display(‘show’,‘utf-8',‘text/xml');
5、模板替换
●__PUBLIC__:
当前网站的公共目录
●__APP__:
当前项目的URL地址
●__GROUP__:
当前分组的URL地址
●__URL__:
当前模块的URL地址
●__ACTION__:
当前操作的URL地址
●TMPL_PARSE_STRING:
选项
在tp中的模板中,有这样几个模板常量,它们表示不同含义,那么,在对url获取时可以用到
如果我们想引用一个外部文件,可以使用如:
__PUBLIC__
接下来,我们给页面添加一个css文件
但是,在引用时,我们发现__PUBLIC__表示的是网站的根目录
如:
http:
//localhost/Produc/index.php/admin/student/index
__PUBLIC__是表示http:
//localhost这个目录,这个问题解决?
解决之道:
1)配置虚拟主机
配置host文件
开启虚拟主机文件
配置虚拟主机
重启apache
使用以下url:
现在__PUBLIC__指的是的根下的Public文件夹
2)修改配置文件
6、获取内容
$this->fetch();
二、模板
1、模板注释
●{/*注释内容*/}
●{//注释内容}
模板的注释不会输出到客户端
2、变量输出
1)普通变量
2)数组变量
3)对象变量
Php代码:
Html代码:
3、系统变量
●$Think.server$_SERVER
●$Think.get$_GET
●$Think.post$_POST
●$Think.request$_REQUEST
●$Think.cookie$_COOKIE
●$Think.session$_SESSION
●$Think.config取得配置文件中的数据
合理的使用以上内置变量,可以减少控制器向模板传值的代码:
4、使用函数
●格式
{$name|fn1|fn2=arg1,arg2,###}
5、默认值
{$变量|default="默认值"}
6、运算符
●+{$a+$b}
●-{$ab}
●*{$a*$b}
●/{$a/$b}
●%{$a%$b}
●++{$a++}或 {++$a}
●--{$a--} 或{--$a}
7、内置标签
1)闭合标签
2)开放标签
8、包含文件
在一些网站中,有些部分是公共的,我们把这些公共的部分放在一个网页中,便于其它网页引用,这时,我们使用include标签
●格式:
是基于项目的入口文件位置。
./Tpl/Admin/Public/header.html
传递参数title
[title]
这样引入文件,路径过长,不方便,怎么解决?
操作名” title="Think”/>
9、导入文件
导入资源文件js、css
●格式:
用于引入js文件
用于引入css文件
用于引用入js或css文件
●格式:
file(必须):
资源文件
type(可选):
资源文件类型,默认为js
起始路径是网站的Public(__PUBLIC__)目录
采用命名空间方式
10、volist标签
用于遍历数组
{$vo.id}
{$vo.name}
●name(必须):
要遍历的数组变量
●id(必须):
当前数组元素
●offset:
要输出数据的偏移量、从0开始计算
●length:
输出数据的长度,需要指定offset
●key:
循环索引从1开始计算,默认值是i
11、foreach标签
用于遍历数组
{$vo.id}
{$vo.name}
Name:
要遍历的数组名称
Item:
将遍历到的元素保存到指定的变量中
12、for标签
{$i}
属性:
●start(必须):
循环变量开始值
●end(必须):
循环变量结束值-1
●name(可选):
循环变量名,默认值为i
●step(可选):
步进值,默认值为1
13、switch标签
输出内容1
输出内容2
默认情况
14、EMPTY标签
name为空值
15、assign标签
●
Name:
变量名
Value:
变量值
16、if标签
●if
●elseif
●else
●格式:
value1
value2
value3
●eq或者equal:
等于
●neq或者notequal:
不等于
●gt:
大于
●egt:
大于等于
●lt:
小于
●elt:
小于等于
●heq:
恒等于
●nheq:
不恒等于
17、使用php代码
在tp中,模里面里允许写php代码
共有两种形式:
echo“hello”;
phpecho“think”;?
>
建议少用
TMPL_DENY_PHP:
在配置文件中设置此选项为true,可以禁止第二种形式
'TMPL_DENY_PHP'=>true,
三、实用项
1、session应用
登录、用户身份信息保存、购物车
在tp中,sesson机制是默认开启的
如果你的项目中没有用到session,那么我们需要在配置文件中将session关闭
在配置文件中,有一个选项
SESSION_AUTO_START
将它设置为false,表示关闭session自动启动
●session('name','value'); 创建session、并且赋值
●$value=session('name');取得session数据
●session('name',null);删除指定的session
●session(null);删除所有session
●session('?
name');判断某个session是否存在布尔型
2、cookie
●cookie('name','value');
●cookie('name','value',3600);
●$value=cookie('name');
●cookie('name',null);
●cookie(null);
3、验证码
定义生成验证码的方法:
在html中,使用img标签进行引用
如何进行验证?
Image类创建的验证码的值会保存到session中,默认名称是verify,但是这个值是经过MD5加密之后,所以,我们要把用户输入的验证码进行加密,再进行比较。
代码如下:
4、数据分页
●$User = M(“User”);
●$count =$User->count();
●$Page =newPage($count,25);
●$show =$Page->show();
●$list=$User->limit($Page-firstRow.','.$Page->listRows)->select();
●$this->assign('list',$list);
● $this->assign('page',$show);
●$this->display();
在page类中,有一个方法叫setConfig,
●header
●Prev
●next
●first
●last
●$page->setConfig('header','个会员');
模板代码:
5、多表连接
类别表
Id分类名
商品表
Id分类id商品名商品价格
1、
Select*from表1,表2where表1.id=表2.sid
2、
Leftjoin、rightjoin
在tp中,实现表连接有两种方法:
1)table:
主要实现第一种表连接
2)join:
主要实现第二种表连接
3、table连接
●$model->table(‘table1t1,tablet2’)
->where(‘t1.id=t2.sid’)
->select();
查询每种商品名称、编号和所属分类
4、join连接
●$model->join(‘t2ont1.sid=t2.id’)
->select();
leftjoin:
左连接默认
rightjoin:
右连接
6、Ajax应用
●Action类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端
●通过配置DEFAULT_AJAX_RETURN进行设置,默认配置采用JSON格式返回数据