thinkPHP的模板布局(1)

首先先说一个。

使用直接在HTML代码内嵌入PHP代码的方式好还是使用一切动态数据都是通过ajax动态获取的方式好?

答案是:

ajax是动态交互数据的,因此大部分内容不使用ajax的方式,而是使用在html中嵌入PHP,当然,开发中我们使用smarty这样的模板引擎,达到模板分离开发的效果。

什么时候使用ajax和接口开发?

有数据调用的地方接口开发,也就是不需要给其他东西提供数据,就一律不采用接口开发,因为不必要提供任何接口。

若是提供了接口也要对接口进行安全性验证。


thinkphp模板布局

 

 

有三种布局模板的支持方式:

第一种方式:全局配置方式

这种方式仅需在项目配置文件中添加相关的布局模板配置,就可以简单实现模板布局功能,比较适用于全站使用相同布局的情况,需要配置开启LAYOUT_ON 参数(默认不开启),并且设置布局入口文件名LAYOUT_NAME(默认为layout)。


配置:

 

<?php
return array(
	//'配置项'=>'配置值'
	'LAYOUT_ON'=>true,
	'LAYOUT_NAME'=>'Layout/layout',
);

'LAYOUT_ON'=>true,  //开启模板布局

LAYOUT_NAME'=>'Layout/layout',//指定模板文件,默认是Application/Home/View/layout.html,建议创建一个Layout文件夹存放布局模板,可以这样Application/Home/View/Layout/layout.html


布局模板文件:

<!DOCTYPE HTML>
<html>
<head>
	<meta charset='utf-8' />
	<title>布局模板</title>
	<style type="text/css">
	header{width: 100%;height: 100px;background: #eee}
	footer{width:100%;height: 300px;background: #e32}
	</style>
</head>
<body>
	<header>头部</header>
           {__CONTENT__}
	<footer>底部</footer>

</body>
</html>


模板文件:

 
<!DOCTYPE HTML>
<html>
<head>
	<meta charset='utf-8' />
	<title>布局模板</title>
	<style type="text/css">
	p{width: 100%;height: 200px;background: #564563;color:#fff;}
	</style>
</head>
<body>
	 <p>加载布局模板</p>

</body>
</html>




效果:




不要模板布局就在模板文件最前面加上{__NOLAYOUT__}

下面这样:

{__NOLAYOUT__} 
<!DOCTYPE HTML>
<html>
<head>
	<meta charset='utf-8' />
	<title>布局模板</title>
	<style type="text/css">
	p{width: 100%;height: 200px;background: #564563}
	</style>
</head>
<body>
	 <p>布局真的可以成功吗?</p>

</body>
</html>



发现不会吧模板加载到布局模板中。

效果:






二。标签布局

 模板标签格式是这样的:

  <layout name="Layout/new_layout" />
Layout是是控制器视图文件夹

new_layout.html是模板布局文件



这种布局模板不需要在配置文件中设置任何参数,也不需要开启LAYOUT_ON,直接在模板文件中指定布局模板即可,相关的布局模板调整也在模板中进行。

以前面的输出模板为例,这种方式的入口还是在User/add.html 模板,但是我们可以修改下add模板文件的内容,在头部增加下面的布局标签(记得首先关闭前面的LAYOUT_ON设置,否则可能出现布局循环):

<!DOCTYPE HTML>
<html>
<head>  
	 
	<meta charset='utf-8' />
	<title>布局模板</title>
	<style type="text/css">
	p{width: 100%;height: 200px;background: #564563;color:#fff;}
	</style>
</head>
<body>
  <layout name="Layout/new_layout" />
	 <p>标签。。加载布局模板</p>

</body>
</html>
 

效果:



第三种方式:使用layout函数控制模板布局

在PHP的$this->display()之前使用

layout();函数控制是否使用模板布局是非常好的,

使用内置的layout方法可以更灵活的在程序中控制模板输出的布局功能,尤其适用于局部需要布局或者关闭布局的情况,这种方式也不需要在配置文件中开启LAYOUT_ON。

代码:

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
	function index(){
		layout(true);//表示当前的模板输出启用了布局模板,并且采用默认的layout布局模板
		$this->display();
	}

}

  layout ( 'Layout/newlayout' );//使用Layout/newlayout.html模板视图作为模板视图

layout(false); // 临时关闭当前模板的布局功能


总结:


在全局模板布局方式,标签模板布局方式,layout函数模板布局方式中:

全局模板布局是经常需要使用的,而且作为默认模板布局,很重要。但是需要配置thinkPHP配置文件


标签模板布局和layout函数模板布局都不用配置任何文件,但是不适合做全局模板布局,而是针对

某种情况下,不想要全局的布局模版,而换做其他的布局模板时候,就可以使用这两种选择,至于选择哪种,

随便。

在开发中,尽量采取这样的布局方式,可以让代码变的精简



但是函数模板布局是会自动覆盖全局模板布局的





标签布局覆盖模板布局:


 {__NOLAYOUT__} //就是这里了,取消全局布局模板
<!DOCTYPE HTML>
<html>
<head>  
	 
	<meta charset='utf-8' />
	<title>布局模板</title>
	<style type="text/css">
	p{width: 100%;height: 200px;background: #564563;color:#fff;}
	</style>
</head>
<body>
  <layout name="Layout/new_layout" />
	 <p>标签。。加载布局模板</p>

</body>
</html>
 








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值