首先先说一个。
使用直接在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函数控制模板布局
使用内置的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>