ThinkPHP5 模板渲染
来源:互联网 发布:linux查看文件权限 编辑:程序博客网 时间:2024/05/17 01:26
视图实例化
视图操作其实都是同过think\View类完成,但一般情况下无需自己实例化视图类,
如果你的控制器类继承了think\Controller的话,会自动实例化视图类并赋值给view属
性而且封装了视图类的主要方法,一般用法如下:
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index()
{
return $this->fetch();
}
}
为了配合控制器的输出,你需要在apps/index/view/index目录下面创建一个html模板文件。
正常访问控制器的index操作方法会输出
hello,world!
如果你没有继承系统的控制器基类,那么最好的建议是你直接使用 view助手函数进行模板操作,view函
数可以完成模板的渲染输出、变量赋值以及字符替换等常用功能,既省心又好用(助手函数其实是调用的
think\response\View类实现),用法如下:
<?php
namespace app\index\controller;
class Index
{
public function index()
{
return view();
}
}
除非你很清楚应该怎么实例化视图类并正确传入配置参数,
否则不推荐手动实例化视图,下面是手动实例化的参考代码:
<?php
namespace app\index\controller;
use think\Config;
use think\View;
class Index
{
public function index()
{
$view = new View(Config::get('template'), Config::get('view_replace_str'));
return $view->fetch();
}
}
视图类的实例化需要传入两个参数:第一个参数是模板引擎的配置,第二个参数是模板替换参数,
更详细的用法我们后面会描述。
模板文件定位
提到模板渲染,就一定得先了解ThinkPHP的模板文件是如何自动定位的,前面的三种方式的控
制器代码中我们都没有明确指定要渲染的模板文件,那么系统又是如何自动定位的呢?
首先要从视图的目录结构开始谈起,我们知道模块的默认目录结构如下:
├─apps 应用目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
view目录就是默认的模块视图文件目录,下面的视图文件的命名规则(注意不是固定,是默认规则而已)
就是 控制器名/操作名.html,其中控制器和操作名都是小写+下划线的规范,
也就是说按照下面的对应关系来自动对应视图文件:
控制器名 操作名 对应视图文件
Index index index/index.html
User index user/index.html
UserType index user_type/index.html
UserType getInfo user_type/getinfo.html
因此,大部分情况下,我们在模板渲染输出的时候,如果没有指定模板文件,
就会按照上面的默认规则自动定位,如何自定义渲染模板以及调整视图目录结
构参考后面的内容。
如果关闭了URL自动转换的话,视图文件的文件名可能会根据实际的操作名而变
化(大小写和URL访问的操作名一致)。
不过默认的这个规则是可以重新定义的,关键是由视图实例化的时候传入的模板引擎参数决定。
如果你继承了系统的控制器基类或者使用助手函数的话,模板引擎的配置参数是在应用配置文件
中设置的,默认的配置参数如下(这里列出的仅仅是可能会影响视图文件的参数):
'template'=> [
// 模板引擎类型支持php think 支持扩展
'type' => 'Think',
// 视图基础目录,配置目录为所有模块的视图起始目录
'view_base' => '',
// 当前模板的视图目录 留空为自动获取
'view_path' => '',
// 模板后缀
'view_suffix' => 'html',
// 模板文件名分隔符
'view_depr' => DS, ],
如果你手动实例化的话,要么获取配置参数传入,要么自己传入相关参数。
type参数决定了当前应用使用什么模板引擎,默认的是ThinkPHP内置的模板引擎,
你也可以配置使用php原生文件作为模板,无论使用内置模板引擎还是php原生模板,
视图文件的定位规则都是一样的。
view_base参数用于配置所有模块的视图起始目录,一旦设置该参数的话,
视图目录将独立于应用目录,假设我们设置如下
'view_base' => ROOT_PATH . 'template' . DS
那么系统的视图目录结构就会变成:
├─apps 应用目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ └─model 模型目录
├─template 视图目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ └─... 更多控制器目录
view_path参数用于配置当前模块的视图目录(如果同时配置view_base和view_path的话,view_base是优先),
一般无需配置,会自动判断当前模块的视图目录,也就是application/当前模块/view/,如果要配置,
一般是在模块的配置文件中设置,例如:
'template' => [
// 当前模板的视图目录 留空为自动获取
'view_path' => APP_PATH . 'index' . DS . 'template' . DS,
],
则index模块的视图目录结构变成:
├─apps 应用目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─template 视图目录
view_suffix参数用于配置视图文件的后缀名,默认为html,例如你可以配置为tpl:
'view_suffix' => 'tpl'
view_depr用于配置视图文件的目录分隔符,默认采用DS(这是一个系统自定义常量,
表示DIRECTORY_SEPARATOR)也就是目录的方式存储,如果我们设置了下面的参数:
'template' => [
// 模板引擎类型 支持phpthink支持扩展
'type' => 'Think',
// 视图基础目录,配置目录为所有模块的视图起始目录
'view_base' => '',
// 当前模板的视图目录 留空为自动获取
'view_path' => '',
// 模板后缀
'view_suffix' => 'tpl',
// 模板文件名分隔符
'view_depr' => '_', ],
原来的视图文件和调整后的对应关系如下:
原来视图文件 调整后视图文件
index/index.html index_index.tpl
user/index.html user_index.tpl
user_type/index.html user_type_index.tpl
user_type/getinfo.html user_type_getinfo.tpl
视图操作其实都是同过think\View类完成,但一般情况下无需自己实例化视图类,
如果你的控制器类继承了think\Controller的话,会自动实例化视图类并赋值给view属
性而且封装了视图类的主要方法,一般用法如下:
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index()
{
return $this->fetch();
}
}
为了配合控制器的输出,你需要在apps/index/view/index目录下面创建一个html模板文件。
正常访问控制器的index操作方法会输出
hello,world!
如果你没有继承系统的控制器基类,那么最好的建议是你直接使用 view助手函数进行模板操作,view函
数可以完成模板的渲染输出、变量赋值以及字符替换等常用功能,既省心又好用(助手函数其实是调用的
think\response\View类实现),用法如下:
<?php
namespace app\index\controller;
class Index
{
public function index()
{
return view();
}
}
除非你很清楚应该怎么实例化视图类并正确传入配置参数,
否则不推荐手动实例化视图,下面是手动实例化的参考代码:
<?php
namespace app\index\controller;
use think\Config;
use think\View;
class Index
{
public function index()
{
$view = new View(Config::get('template'), Config::get('view_replace_str'));
return $view->fetch();
}
}
视图类的实例化需要传入两个参数:第一个参数是模板引擎的配置,第二个参数是模板替换参数,
更详细的用法我们后面会描述。
模板文件定位
提到模板渲染,就一定得先了解ThinkPHP的模板文件是如何自动定位的,前面的三种方式的控
制器代码中我们都没有明确指定要渲染的模板文件,那么系统又是如何自动定位的呢?
首先要从视图的目录结构开始谈起,我们知道模块的默认目录结构如下:
├─apps 应用目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
view目录就是默认的模块视图文件目录,下面的视图文件的命名规则(注意不是固定,是默认规则而已)
就是 控制器名/操作名.html,其中控制器和操作名都是小写+下划线的规范,
也就是说按照下面的对应关系来自动对应视图文件:
控制器名 操作名 对应视图文件
Index index index/index.html
User index user/index.html
UserType index user_type/index.html
UserType getInfo user_type/getinfo.html
因此,大部分情况下,我们在模板渲染输出的时候,如果没有指定模板文件,
就会按照上面的默认规则自动定位,如何自定义渲染模板以及调整视图目录结
构参考后面的内容。
如果关闭了URL自动转换的话,视图文件的文件名可能会根据实际的操作名而变
化(大小写和URL访问的操作名一致)。
不过默认的这个规则是可以重新定义的,关键是由视图实例化的时候传入的模板引擎参数决定。
如果你继承了系统的控制器基类或者使用助手函数的话,模板引擎的配置参数是在应用配置文件
中设置的,默认的配置参数如下(这里列出的仅仅是可能会影响视图文件的参数):
'template'=> [
// 模板引擎类型支持php think 支持扩展
'type' => 'Think',
// 视图基础目录,配置目录为所有模块的视图起始目录
'view_base' => '',
// 当前模板的视图目录 留空为自动获取
'view_path' => '',
// 模板后缀
'view_suffix' => 'html',
// 模板文件名分隔符
'view_depr' => DS, ],
如果你手动实例化的话,要么获取配置参数传入,要么自己传入相关参数。
type参数决定了当前应用使用什么模板引擎,默认的是ThinkPHP内置的模板引擎,
你也可以配置使用php原生文件作为模板,无论使用内置模板引擎还是php原生模板,
视图文件的定位规则都是一样的。
view_base参数用于配置所有模块的视图起始目录,一旦设置该参数的话,
视图目录将独立于应用目录,假设我们设置如下
'view_base' => ROOT_PATH . 'template' . DS
那么系统的视图目录结构就会变成:
├─apps 应用目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ └─model 模型目录
├─template 视图目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ └─... 更多控制器目录
view_path参数用于配置当前模块的视图目录(如果同时配置view_base和view_path的话,view_base是优先),
一般无需配置,会自动判断当前模块的视图目录,也就是application/当前模块/view/,如果要配置,
一般是在模块的配置文件中设置,例如:
'template' => [
// 当前模板的视图目录 留空为自动获取
'view_path' => APP_PATH . 'index' . DS . 'template' . DS,
],
则index模块的视图目录结构变成:
├─apps 应用目录
│ ├─index 模块目录
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─template 视图目录
view_suffix参数用于配置视图文件的后缀名,默认为html,例如你可以配置为tpl:
'view_suffix' => 'tpl'
view_depr用于配置视图文件的目录分隔符,默认采用DS(这是一个系统自定义常量,
表示DIRECTORY_SEPARATOR)也就是目录的方式存储,如果我们设置了下面的参数:
'template' => [
// 模板引擎类型 支持phpthink支持扩展
'type' => 'Think',
// 视图基础目录,配置目录为所有模块的视图起始目录
'view_base' => '',
// 当前模板的视图目录 留空为自动获取
'view_path' => '',
// 模板后缀
'view_suffix' => 'tpl',
// 模板文件名分隔符
'view_depr' => '_', ],
原来的视图文件和调整后的对应关系如下:
原来视图文件 调整后视图文件
index/index.html index_index.tpl
user/index.html user_index.tpl
user_type/index.html user_type_index.tpl
user_type/getinfo.html user_type_getinfo.tpl
阅读全文
0 0
- ThinkPHP5 模板渲染
- ThinkPHP5 模板渲染
- ThinkPHP5 模板渲染
- ThinkPHP5 模板渲染
- thinkPHP5-渲染模板的方式
- thinkphp5 使用__PUBLIC__等进行模板渲染输出
- Thinkphp5模板引入
- ThinkPHP5模板分离
- thinkPHP5模板布局
- 渲染模板
- 模板 渲染
- 渲染模板
- thinkphp5模板篇之 模板循环标签
- thinkphp5 之数据操作和模板输出
- THINKPHP5 入门 -7 视图和模板
- Thinkphp5学习(25)视图和模板
- thinkphp5 引入前台、后台模板方法
- thinkphp5自定义 模板替换规则 如__PUBLIC__
- CentOS中配置SoftWareRaid磁盘冗余阵列
- Hibernate事务、隔离级别、与并发问题处理(乐观锁与悲观锁)
- 最大子矩阵题解
- 面试小结之Elasticsearch篇
- 快速排序
- ThinkPHP5 模板渲染
- TCP之使用带外数据的客户/服务器
- N皇后问题
- 线性近似
- aapt使用手册
- Kafka的安装和使用总结
- HDU 6059 Kanade's trio
- C++运算符的重载
- keepalived 配置文件参数详解