ThinkPHP5.0 视图

新版的控制器能够无需继承任何的基础类,所以在控制器中如何使用视图取决于你怎么定义控制php

继承Controller后即可以直接使用 request 和view类的方法 $this->request->isPost() $this->fetch()html

控制器继承了\think\Controller类,能够直接调用试图类的方法

$this->fetch('模板',参数);thinkphp

2.助手函数 渲染模板输出 return view('hello',['name'=>'thinkphp']); 助手函数调用格式: view('[模板文件]'[,'模板变量(数组)'][,模板替换(数组)]) 不管你是否继承think\Controller 类,助手函数均可以使用,也是最方便的一种数组

一 模板赋值 1.系统变量 配置参数无需赋值 自定义变量经过assign()赋值 赋值单个变量cookie

赋值数组

二 .模板渲染 fetch('模板文件','值') 渲染使用规则 (1).不写参数自动定位当前操做(与当前操做名同名模板文件小名)的模板文件编辑器

[@1](https://my.oschina.net/u/1198) 当前模块/默认视图目录/当前控制器(小写)/当前操做(小写).html

@2 模板引擎的view_depr 设置(假设 'view_depr'=>'_' )的话,则上面的自动定位规则变成:
当前模块/默认视图目录/当前控制器(小写)_当前操做(小写).html

(2).设置模板参数 @1 表示调用当前控制器下面的edit模板 return $view->fetch('edit');函数

@2 表示调用Member控制器下面的read模板。
	return $view->fetch('member/read');

[@3](https://my.oschina.net/u/2648711) 跨模块调用
	return $view->fetch('admin@member/edit');

实质: 渲染输出不须要写模板文件的路径和后缀,这里面的控制器和操做并不必定须要有实际对应的控制器和操做,只是一个目录名称和文件名称而已, (系统直接从view下寻找相对应设置的控制器和操做方法名对应的文件)fetch

例如,你的项目里面可能根本没有Public控制器,更没有Public控制 器的menu操做,可是同样可使用 return $view->fetch('public/menu'); 输出这个模板文件。理解了这个,模板输出就清晰了。this

@4 自定义模板路径(这种方式须要带模板路径和后缀指定一个完整的模板文件位)
	return $view->fetch('模板文件位置');

模板文件位置是相对于应用的入口文件,而不是模板目录 return $view->fetch('./template/public/menu.html');这里的template/public 目录是位于当前 项目入口文件位置下面.net

三 渲染内容 若是但愿直接解析内容而不经过模板文件的话,可使用display 方法: $this->display($content,$vars); 渲染的内容中同样可使用模板引擎的相关标签 public function index() { $content = '{$name}-{$email}'; return $this->display($content, [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); }

四 模板输出字符串替换 1.全局替换的话,能够直接在配置文件中添加: 'view_replace_str' => [ 'PUBLIC'=>'/public/', 'ROOT' => '/', ] 而后就能够直接使用 2.单个视图中字符串替换 public function index() { $this->assign('name','thinkphp'); return $this->fetch('index',[],['PUBLIC'=>'/public/']); }

五 模板标签 普通标签用于变量输出和模板注释,普通模板标签默认以{ 和 } 做为开始和结束标识,而且在开始标记紧 跟标签的定义,若是之间有空格或者换行则被视为非模板标签直接输出。 例如: {$name} {} templste 里配置修改能够 {$vo.name}

标签库标签 标签库标签 标签库标签能够用于模板变量输出、文件包含、条件控制、循环输出等功能,并且彻底能够本身扩展功能。 5.0版本的标签库默认定界符和普通标签同样使用{ 和} ,是为了便于在编辑器里面编辑不至于报错,当 然,你仍然能够更改标签库标签的起始和结束标签,修改下面的配置参数:

六 变量输出 (1)普通变量须要先赋值后才能在模板中输出 {$name} 编译结果 <?php echo($name);?>

@2 数组 {$data.name} {$data['name']} @3 对象 {$data:name} {$data->name}

(2)系统变量不须要能够直接在模板中输出,系统变量输出一般以$Think 开头 {$Think.server.script_name} 输出$_SERVER['SCRIPT_NAME']变量 {$Think.cookie.name} 输出$_COOKIE['name']变量

七 常量输出 {$Think.APP_PATH} 八 配置输出 {$Think.config.default_module} {$Think.config.default_controller} 九 请求参数输出 模板支撑直接输出Request 请求对象的方法参数,用法以下: $Request.方法名.参数 {$Request.get.id}

十 使用函数 @1 不带参数 {$name|md5} <?php echo md5($name);?>

@2 多个参数须要调用 {$date_time|data="y-m-d",###} 第二个表示占位符 为变量$date_time {$data.name|substr=0,3} 第一个参数为$data.name

{$name|md5|strtoupper|substr=0,3}

<?php echo (substr(strtoupper(md5($name)),0,3)); ?>

十一 给变量输出提供默认值 {$user.nickname|default="这家伙很懒,什么也没留下"}

对系统变量依然能够支持默认值输出,例如:

{$Think.get.name|default="名称为空"}

默认值和函数能够同时使用,例如: {$Think.get.name|getName|default="名称为空"}

十二 原样输出 {literal} hello,{$name} {/literal}

相关文章
相关标签/搜索