thinkphp框架中模板的使用及其技巧

本文介绍了ThinkPHP框架中模板的使用,包括控制器与模板文件的对应关系,模板变量的输出方法,模板替换技巧,如何使用不同主题的模板文件,以及模板配置文件的详细配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

thinkphp框架中模板使用主要控制器与模板文件一一对应,模板变量的输出,模板的替换,不同主题的模板文件,模板配置文件的配置

0.
利用地址传递带参数来向模板文件传递参数,让它输出:
例如:地址栏:localhost/think/index.php/Index/show/name/Tony/age/18
那么浏览器中显示:欢迎你Tony你的年龄是18
原理是在控制器的show方法接受了get传递的参数,然后在模板中显示出来;
1.o
如果需要开启调试模式,比如开启前台的调试模式下,那么就需要更改项目根目录下的index.php在引入核心文件的这句话的前面加上一句define('APP_DEBUG',true);

2.

url具有四种访问方式,但是最常见的一种就是pathinfo这种方式,这种方式比较重要用的也比较广泛;
3.


如果需要开启调试模式,比如开启前台的调试模式,就可以在前台的配置文件中连接数据库资源的一句话后面添上一句话
'SHOW_PAGE_TRACE'=>true,//开启页面的Trace
还可以在此文件中更改模板文件的后缀,比如更改成.tpl而不是.html一般来说还是用.html比较好
那么需要添上一句话:'TMPL_TEMPLATE_SUFFIX'=>'.tpl',
4.

如果需要模板文件不需要写的那么深,就可以在模板文件中以这种方式命名Index_index.html
之前是按照不同的模块在tpl文件夹下面建立不同的文件夹,当然也可以建立没有对应模块的文件夹!比如tml下面有User,Index文件夹分别对应User和Index模块,即两个类文件
5.


但是第四步不是想改就改,当然需要在配置文件中添加相应的配置:
'TMPL_FILE_DEPR'=>'_',//修改模板文件的目录层次
6.

在配置文件中可以添加默认的主题的目录名,这样模板就会显示对应的主题在显示模板的时候;
7.

如果需要动态地切换不同的主题文件,那么需要在配置文件中写上支持模板列表:
'DEFAULT_THEME'=>'your',//设置模板主题
'TMPL_DETECT_THEME'=>true,//自动侦测模板主题
'THEME_LIST'=>'your,my',//支持的模板主题列表
8.



Tpl文件夹下的目录结构:
Index
my
User
your
Index_index.html

9.



直接利用sql语句进行查询数据比如在控制器中可以写:$m=M();$result=$m->execute("insert into t_user('username') value('ztz3')");
var_dump($result);
10

控制器中访问不同模块下的模板文件:
用display方法进行访问:
$this->display('User:test');
11.

直接利用全路径访问对应的模板文件:
比如:$this->display('./Public/error.html');//备注:public是网站根目录下建立一个公共目录,用来
12.

display方法可以利用display方法,在第二个参数位置设置输出模板的编码方式;
比如:$this->display('./Public/error.html','utf-8');
13.
display函数还可以设置输出文件的类型
$this->display('./Public/error.html','utf-8','text/xml');
表示输出的文本的形式是text/xml类型;
14.
有时候模板不是以结构的形式存储在服务器系统的硬盘中,有时是字符串的形式储存在数据库中的,那么可以用show
方法进行输出
比如:
public function index(){
$content=$this->fetch('Public:error');
$this->show($content);

}
15.
将变量输出模板中有两种方法:
public function index(){
//$this->assign('name','昭通正');
$this->name='昭通正2';
$this->display();
}
16.
这个是标准的内联样式,非常标准
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Index</title>
<style>
p{
background:red;
}
</style>
</head>
<body>
<p>Hello<{$name}></p>
</body>
</html>
17.
将样式可以单独放在一个公共的文件中
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Index</title>
<link rel='stylesheet' type='text/css' href='__PUBLIC__/Css/basic.css'/>
</head>
<body>
<p>Hello<{$name}></p>
</body>
</html>
18.
在php5.1手册中的20附录中存在常量参考这个配置项里面写好了
各种常量代表的路径;
在模板替换的这一项中还是有不同变量来代替不同的路径,有时候不用__PUBLIC__而是采用
__ROOT__更好些;

21.
      (重点)
__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/
__ROOT__: 会替换成当前网站的地址(不含域名) 
__APP__: 会替换成当前项目的URL地址 (不含域名)
__GROUP__:会替换成当前分组的URL地址 (不含域名)
__URL__: 会替换成当前模块的URL地址(不含域名)
__ACTION__:会替换成当前操作的URL地址 (不含域名)
__SELF__: 会替换成当前的页面URL




22.可以自定义模板替换的变量

更换模板变量规则,修改配置项
'TMPL_PARSE_STRING'=>array(           //添加自己的模板变量规则
'__CSS__'=>__ROOT__.'/Public/Css',
'__JS__'=>__ROOT__.'/Public/Js',
),

23.控制器向模板传值不仅可以传变量还可以传数组和对象
并且传数组的时候可以在模板文件中以点的形式进行输出
<body>
{$name.k1}

</body>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值