此版本的基本模块,访问地址都搞清楚之后,现在需要模板的输出,单独的API应该是不需要模板的,因为写这句话之前自己还没有尝试用这个框架来写一个完整项目的接口。
模板也就是一般的html文件,用过smarty的人都知道,一般都是获取数据之后,然后读取模板文件,然后正则匹配了当前的关键字,用动态数据替换。
1,分配模板。
首先当前控制器必须继承基类的控制器或者引用模板类,主要是为了返回模板处理类 view。
第一种:引用controller,然后继承controller,调用当前对象方法进行模板分配:
<?php namespace app\admin\controller; use think\controller; class Index extends Controller { public function index() { return $this->fetch(); //return "This is Admin Module!"; } }
当前是没有模板的,只是分配了,所以在application/admin/下边新建一个view文件夹,view下边再新建一个Index文件夹,然后创建自己的模板文件,也就是html文件,这个后缀可以自己在配置文件里边修改,配置文件里边是什么后缀,那么新建的文件就是什么后缀。
主要目录结构为这样
return $this->fetch();是分配给模板,默认的是index.html模板,根据自己控制器的名去找模板,如果控制器是data.php,那么模板文件就是data.html。
第二种方法是通过view类去创建模板处理对象,然后分配模板:
其实$this->fetch();等价于$view->fetch();只不过是创建的对象的形式不同。
分配数据然后在模板中显示:
$this->assign('data',' - <font color="red">this is my data!</font>'); or $view->assign('data',' - <font color="red">this is my data!</font>');
当前分配的数据就显示到模板当中。
以上是分配当前控制器的当前模板:如果要在当前控制器index中分配data.html模板,那么:
return $view->fetch(‘data’);
在模板文件中显示则:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Untitled Document</title> </head> <body> this is admin views; {$data} </body> </html>
分配不同控制器下的模板文件,在view中创建一个User 文件夹,然后User中创建index.html,最后:
return $view->fetch(‘User/index’);
根据开发手册,如果分配的数据是个数组,那么输出:
$data['name'] = 'ThinkPHP'; $data['email'] = 'thinkphp@qq.com'; $view->assign('data',$data); // Name:{$data.name} Email:{$data.email} or Name:{$data['name']} Email:{$data['email']} //如果data变量是一个对象(并且包含有name和email两个属性),那么可以用下面的方式输出: Name:{$data:name} Email:{$data:email} or Name:{$data->name} Email:{$data->email}
模板创建和分配完事儿了。