ThinkPHP(二)

2017-08-17  本文已影响314人  PHPer_

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 name="arr" id="data" offset="0" length="2" empty='我没数据'>
{$data.name}---------{$data.age}<br>
</volist>
<foreach name="arr" item="data">
{$data.name}---------{$data.age}<br>
</foreach>

注意:foreach循环没有offset、length、empty这三个参数

eq(==)
neq(!=)
gt(>)
egt(>=)
lt(<)
elt(<=)
heq(===)
nheq(!==)
<for start="1" end="10" comparison="elt" name="num">
{$num}<br>
</for>
<if condition="$num gt 10">num 大于 10
<elseif condition="$num lt 10"/>num 小于 10
<else/>num 等于 10
</if>

注意:elseif与else一定要有结束符/;

<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'}
上一篇 下一篇

猜你喜欢

热点阅读