RT.
使用ThinkPHP的模板支持,直接在页面加载模板,使得页面结构更加清晰化。ThinkPHP(按照最新3.2.2版本)的模板操作流程思路总结如下:
1:在对应模块(Home/Admin/...)Controller下创建对应控制器
2:在View中创建对应控制器的表现层文件
3:在模板文件夹Widget中创建模板控制器
4:在View中创建渲染模板的模板文件
举个栗子:
我的项目 Exam 在项目下有Home模块
1:在Home/Controller下新建一个ModulesCotroller.class.php控制器,其中的index方法调用自身表现层文件展示:
<?php
namespace Home\Controller;
use Think\Controller;
class ModulesController extends Controller{
public function index(){
$this->display();
}
}
2:在Home/View/Modules目录下新建一个index.html表现层文件
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
{:W('Menu/render',array('blue'))}<!--调用W方法,并传参数值blue-->
</body>
</html>
我们通过127.0.0.1/Exam/Home/Modules/index访问这个方法,index.html文件中调用了W方法调用项目的模板文件来进行渲染,接下来完善模板文件。
3:在Home/Widget目录下创建MenuWidget.class.php菜单项模板控制器
<?php
namespace Home\Widget;
use Think\Controller;
class MenuWidget extends Controller{
public function render($data){
$this->assign('menu',$data); //取的index.html传来的值,并赋予menu变量
$this->display('Menu:menu'); //调用模板渲染文件进行渲染
}
}
<font color="{$menu}">这是模板菜单</font> <!--通过{$menu}来使用参数-->
通过这四个步骤,就可以在我们的控制器中调用使用我们已经创建好的模板,或者通过传入不同的参数来使得模板展现出不同的样式。
针对于传多个参数,可以在index.html中的W方法调用时,传多几个参数过去:
{:W('Menu/render',array('color'=>'blue','size'=>'30'))}
记得数组要加上下标。
在MenuWidget控制器中要分别接收这两个参数,然后再使用数组将这些参数赋予一个元素,并将其传给渲染模板文件:
public function render($color, $size){
$data = array('color'=>$color, 'size'=>$size);
$this->assign('menu',$data);
$this->display('Menu:menu');
}
在menu模板文件中可以通过{$menu[变量下标]}的方法来调用我们的数组参数,这个和之前在模板中调用模型数据是一样的道理。
例如:
<font color={$menu[color]} size={$menu[size]}>这是模板菜单</font>