视图即web可见内容,一般是HTML页面,属于MVC中的V。
模板的定义
模板在使用之前需要一定的设置才能方便开发者使用。默认的模板文件定义规则是:
视图目录/[模板主题/]控制器名/操作名+模板后缀
第一步:在User控制器模板执行一条语句:
//渲染模板输出
$this->display();
在没有进行任何定义ID情况下,会自动报错,错误信息可能是:
模板不存在:./thinkphp/Home/View/User/index.html
通过这个提示,我们需要在View目录下创建User目录,并在User目录下创建index.html文件,这时候的渲染输出就能成功。
默认情况下视图目录是View,如果你想改变成别的目录名可以设置:
//修改模板视图目录
'DEFAULE_V_LAYER'=>'Template',
默认情况下的模板文件后缀是.html,如果你想改变成别的后缀可以设置:
//修改模板中的文件的后缀
'TMPL_TEMPLATE_SUFFIX'=>'.tpl',
如果感觉每一个模块,都要创建相应的目录太过于麻烦,可以设置:
//用下划线代替目录层次 ---一般不用
'TMP_FILE_DEPR'=>'_',
//设置外部的模板目录(如果不想模板在view中,那就另外建)
'VIEW_PATH'=>'./Public/',
如果一个系统要考虑多套界面皮肤的花,要考虑到默认皮肤以及可选皮肤
//设置默认主题目录,完了之后还可以在view目录下建立blue、green等文件
夹对应相应颜色的主题
//当想调用这些主题的操作为:$this->theme('blue')->display();
'DEFAULT_THEME'=>'default',
赋值和渲染
一般主要是传递变量。需要在控制器中把变量传递给模板。Thinkphp提供了assign方法对模板变量赋值,无论何种变量类型都同意使用assign赋值。
//给模板传递一个变量
$this->assign('user','某某某');
//模板中调用变量
{$user}
PS:这个方法必须在display()方法前使用,保存变量正确传递。
渲染模板输出使用的是display方法,有三个可选参数:
display([模板文件][,字符编码][,输出类型]);
如果不传递任何参数,它会按照默认的目录定位模板的位置:
当前模块/默认视图目录/当前控制器/当前操作.html
//不传参数
$this->display();
./thinkphp/Home/View/default/User/index.html
//修改默认模板
$this->display('add');
./thinkphp/Home/View/default/User/add.html
//切换view下不同文件夹的模板(比如view下admin文件夹下的add.html)
$this->dispaly('admin:add');
./
模板地址
tp框架封装了一个T函数,专门用于生成模板文件,格式如下:
T([资源://][模板@][主题/][控制器/]操作,[视图分层]);
//输出当前模板地址
echo T();
当然可以结合上面讲的所有定义方法来自定义模板;
echo T('Public/add');
echo T('Admin@index');
echo T('Admin@Public/add','Template');
直接使用T函数输出
$this->display(T());
获取内容
如果需要获取模板的内容,可以使用fetch()方法,这个方法的使用和display()方法一致。
//获取模板里的内容
$content = $this->fetch();
var_dump($content);
//通过内容再渲染输出
$this->show($content);
PS:通过fetch()方法获取内容,主要是为了可以处理和过滤更加复杂的内容。处理后再由show()方法输出。