在如下图所示目录中建立html
然后在Index控制器的index方法中,调用模板
那么当你访问/Index/index时就会显示index.html。
如果你不想要模板和方法同名,你可以在display方法中跟上模板名称即可。如下图:
两种方式赋值
class IndexController extends Controller {
public function index(){
//两种赋值方式
$this->name = 'tom';
$this->assign('age',10);
$this->display();
}
}
我们可以使用php进行输出变量
echo $name;
echo $age;
?>
也可以通过模板技术直接输出变量
$me['name'] = 'tom';
$me['age'] = 10;
$this->assign('me',$me);
$this->display();
<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
{$me['name']}
{$me.name}
{$me.sex | default='男'}
body>
html>
如上所示,如果变量不存在,可以使用default给一个默认值
在模板中,也是使用//
进行注释,如:
{//$name}
在模板中
{$me['age']+1}
注意,涉及到运算时,数组变量不能用$me.age
这种形式,只能用$me['age']
如在模板中,对变量调用md5函数进行加密
{$me.name|md5}
如果要连续调用多个函数,使用|隔开,如md5加密后进行截取
调用方法使用=号指定参数,多个参数用逗号隔开
{$me.name|md5|substr=0,5}
再如:
$this->date = time();
在php中,date方法调用是这样的:
$time = time();
date('Y-m-d H:i:s',$time);
在模板中,我们使用三个#号来表示变量本身作为调用方法的参数
{$date|date='Y-m-d H:i:s',###}
在模板中,ThinkPHP为我们内置了一些系统变量,例如:
变量 | 说明 |
---|---|
{$Think.now} | 时间 |
{$Think.version} | 版本 |
{$Think.server.http_host} | http请求主机 |
定义数组
$person = array(
1=>array('name'=>'tom','age'=>'10'),
2=>array('name'=>'jack','age'=>'12'),
3=>array('name'=>'jane','age'=>'13'),
4=>array('name'=>'mike','age'=>'15'),
);
$this->assign('person',$person);
$this->display();
volist标签中:
'person' id='p' offset='<0>0>' length='5' empty='no data'>
{$p['name']}==={$p['age']}
key表示索引,从1开始
<foreach name='person' item='p' key='k'>
{$k}=={$p['name']}==={$p['age']}
foreach>
<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" >
for>
循环变量名默认为i
例如:
<for start="1" end="100" comparison="elt">
{$i}
for>
comparison取值说明:
英文缩写 | 对应的符号 |
---|---|
eq | = |
neq | != |
gt | > |
egt | >= |
lt | < |
elt | <= |
heq | === |
nheq | !== |
<if condition="($name eq 1) OR ($name gt 100) "> value1
"$name eq 2"/>value2
<else /> value3
if>
<switch name="User.level">
<case value="1">value1case>
<case value="2">value2case>
<default />default
switch>
case如果有多个条件,使用|分割,如
<case value="gif|png|jpg">图像格式case>
case标签还有一个break属性,表示是否需要break,默认是会自动添加break,如果不要break,可以使用:
<case value="1" break="0">admincase>
也可以对case的value属性使用变量,例如:
<case value="$adminId">admincase>
判断status是否等于1
"status" value="1 >
正常
判断status不等于1
"status" value="1 >
不正常
以上两种可以合起来写
"status" value="1 >
正常
不正常
同理,lt,gt等也是一样的用法
也可以使用compare
"name" value="5" type="eq">
value
<else /> value2
<in name="id" value="1,2,3">
id在范围内
<else/>id不在范围内
in>
也可是使用变量
<in name="id" value="$range">
id在范围内
in>
notin用法和in一模一样
<between name="id" value="1,10">输出内容1between>
notbetween用法也是一样
"id" value="1,2,3" type="in">输出内容1
模板中的三元运算符和php中一模一样
{$status?'正常':'错误'}
{$num>10?'大于':'小于'}
在模板中,thinkphp官方推荐使用
echo 'hehe';
来替代
php