Blogger Information
Blog 100
fans 8
comment 2
visits 150161
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Thinkphp5.1.14实例:模板赋值、内容过滤和替换、动态布局、继承--20180530-23:50发布(0529作业)
lilove的博客
Original
2992 people have browsed it

主题:

实例演示: 

  1. 模板赋值;

  2. 模板内容过滤与替换;

  3. 模板动态布局;

  4. 模板继承技术。

一、模板赋值(demo2()对应模板demo2.html)实例

<?php
namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
	// 二、模板赋值
	public function demo2() {
		// 1.assign('模板变量名', 值)方法
		$name = '小明2';
		// $this->view->assign('my_name', $name);
		// $this->view->assign('type', '哈哈');

		// 2.传参赋值:fetch('模板', [参数数组])
		$this->fetch('demo2',['my_name'=>$name,'type'=>'超级跑车2']);
		
		// 3.对象赋值:
		// $this->view->my_name = $name;
		// $this->view->type = '超级跑车';

		return $this->view->fetch();
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo2.html

我的名字是:<p style="color:red;">{$my_name}</p>
我喜欢:<span style="color:red;">{$type}</span>

运行实例 »

点击 "运行实例" 按钮查看在线实例

二、模板内容过滤和替换(demo3()对应模板demo3.html)实例

<?php
namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
	// 三、模板内容过滤和替换
	public function demo3() {
		// 5.1版本之后删除了内置的替换功能,采用config/template.php进行配置
		$this->fetch('demo3',['name'=>'小明3','type'=>'超级跑车2']);

		// 使用str_replace()将内容替换成空字符串相,当于过滤了该内容
		$filter = function($content) {
			return str_replace('小明3', '', $content);
		};

		// return $this->fetch();
		return $this->filter($filter)->fetch();
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo3.html

我的名字是:<p style="color:red;">{$name}</p>
我喜欢:<span style="color:red;">{$type}</span>

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、模板动态布局(demo4()对应模板demo4.html,layout.html)实例

<?php
namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
	// 四、模板布局
	public function demo4() {
		// 1.全局开启模板布局(config\tamplate.php)
		
		// 2.用标签配置模板布局:不依赖全局配置
		// {layout name="布局模板名" /}:添加布局
		// {__NOLAYOUT__}:关闭全局布局

		// 3.动态布局
		// (1)不需要在模板配置文件中进行任何配置
		// (2)不需要在当前模板中添加任何标签

		// 动态开启全局布局
		// $this->view->engine->layout(true);

		// 注意在模板文件layout.html中名称(__TEXT__)要对应
		// $this->view->engine->layout('layout', '{__content__}');
		$this->view->engine->layout('layout', '{__TEXT__}');

		// 默认的模板文件是引入view\layout
		return $this->view->fetch();
		// return $this->view->fetch('demo4');
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo4.html

<style type="text/css">
	.main {
		width: 600px;
		height: 500px;
		margin: auto;
		background-color: skyblue;
		text-align: center;
		line-height: 500px;
	}
</style>
<div class="main">主体内容</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

header.html网页头部和footer.html网页底部请自行创建

layout.html(布局模板文件)

{include file="public/header" /}
{__TEXT__}
{include file="public/footer" /}

运行实例 »

点击 "运行实例" 按钮查看在线实例

五、模板继承(demo5()对应模板demo5.html,base.html)实例

<?php
namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
        // 五、模板继承
	public function demo5() {
		// view\base.html:基础模板,供其他模板继承
		// base.html内容全部要用标签{block}定义
		return $this->view->fetch();

	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo5.html

{//继承基础模板base.html}
{extend name="base" /}

{block name="main"}
	<p style="text-align: center;">继承后重写主体部分</p>
{/block}

{block name="car"}
	{//__BLOCK__常量引用父模板的内容}
	<p style="text-align: center;">name="car"的重写内容, {__BLOCK__}</p>
{/block}

{block name="fly"}
	{//这里内容为空可将父模板中的相应内容清空}
{/block}

运行实例 »

点击 "运行实例" 按钮查看在线实例

base.html(父模板)

{//基础模板(父模板)中只允许出现block标签}
{block name="header"}
	{include file="public/header" /}
{/block}

{block name="main"}
	主体部分
{/block}

{block name="car"}
	<br>name="car"的原始内容
{/block}

{block name="fly"}
	name="fly"的原始内容
{/block}

{block name="footer"}
	{include file="public/footer" /}
{/block}

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post