TP的URL模式
配置文件里定义
'URL_MODEL'=>1
1=>pathinfo模式(默认模式):/index.php/Home/Index/user/id/1.html
0=>普通模式:/index.php?m=Home&c=Index&a=user&id=1
2=>重写模式:/Home/Index/user/id/1.html
重写模式首先要开启Apache重写配置,并且在项目根目录下要编写重写规则.htaccess文件;
3=>兼容模式:/index.php?s=/Home/Index/user/id/1.html
兼容模式的好处是,如果你在不知道服务器是Apache还是Nginx的时候可以使用兼容模式;
U方法
U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址
模板中使用,当在模板中使用U方法时,好处在于:一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码
<a href="{:U('Index/user','type=1&id=1')}">点击</a>
//遍历循环过程中使用
{:U('Article/index','category='.$vo['name'])}
控制器使用
$this->redirect('Index/user');
$this->success('新增成功',U('Store/Ump/lists','type=1&id=1'));
URL伪静态
什么是伪静态?真正的静态页面其实是一个HTML文件,那么伪静态就是给了一个HTML的后缀,但是页面之间还有数据进行传输,伪静态利于搜索引擎,认为你这个是个静态文件,那么它就会以最快的速到趴到你的页面,让你的页面以最短的时间出现在搜索引擎上,对于收录是有利的,这属于SEO优化;
自定义函数
在TP框架里使用到的C、U、M、D方法等等都是在框架里面配置好的,位置:/ThinkPHP/Common/functions.php;
可以自定义一个函数例子测试一下:
function show() {
echo 'hello word';
}
其中系统函数文件里面封装了一个var_dump的便体,dump方法浏览器友好的变量输出;
模板技术
- 展示模板
控制器展示模板与Smarty方法一样
$this->display();
控制器里的方法要引入模板,那么对应的就要在View视图层里建立相对应的页面;
- 模板的赋值和输出
第一种方法:
控制器赋值
$str = '王五';
$this->name = $str;
模板输出
<?php echo $name;?>
第二种方法:
控制器赋值
$str = '王五';
$this->assign('name',$str);
模板输出
{$name}
ThinkPHP模板引擎介绍
ThinkPHP内置模板引擎,支持XML标签和普通标签的模板解析,编译型模板引擎支持动态缓存;
- 变量输出和运算
常用的运算符:+ - * / ++ --
//正确
{$arr['age']+1}
//错误
{$arr.age+1}
- 调用函数
//字符串加密
{$arr.name|sha1|md5}
//默认值
{$arr.today|default='2017'}
//字符串截取
{$arr['age']|substr=0,2}
//日期格式化
{$date|date='Y-m-d H:i:s',###}
- 系统参数
//时间
{$Think.now}
//系统版本
{$Think.version}
//服务器信息
{$Think.server.http_host}
- volist循环
<volist name="arr" id="data" offset="0" length="2" empty='我没数据'>
{$data.name}---------{$data.age}<br>
</volist>
- foreach循环
<foreach name="arr" item="data">
{$data.name}---------{$data.age}<br>
</foreach>
注意:foreach循环没有offset、length、empty这三个参数
- 条件修饰符
eq(==)
neq(!=)
gt(>)
egt(>=)
lt(<)
elt(<=)
heq(===)
nheq(!==)
- PHP启蒙for循环
<for start="1" end="10" comparison="elt" name="num">
{$num}<br>
</for>
- if判断
<if condition="$num gt 10">num 大于 10
<elseif condition="$num lt 10"/>num 小于 10
<else/>num 等于 10
</if>
注意:elseif与else一定要有结束符/;
- switch判断
<switch name="name">
<case value="gsy">my name is gsy</case>
<case value="王五|老师">my name is 王五老师</case>
<default/>my name is default
</switch>
- 比较标签
<比较标签 name='变量名' value='比较的值'></比较标签>
<eq name="num" value="10">num = 10<else/>num != 10</eq>
<gt name="num" value="10">num > 10<else/>num < 10</gt>
//比较标签集合体
<compare name="num" value="10" type="eq">num = 10<else/>num != 10</compare>
- 区间标签
//in--在
<in name="num" value="1,2,3,4,5,6">在这个区间</in>
//notin--不在
<notin name="num" value="1,2,3,4,5">不在这个区间</notin>
//便体
<in name="num" value="1,2,3,4,5,6">在这个区间<else/>不在这个区间</in>
//between
<between name="num" value="1,10">确实在这个区间</between>
//notbetween
<notbetween name="num" value="1,10">确实不在这个区间</notbetween>
- 三元运算
{$num > 10 ? '大于10' : '小于10'}