博客列表 >Thinkphp5.1.14实例:模板赋值、内容过滤和替换、动态布局、继承--20180530-23:50发布(0529作业)

Thinkphp5.1.14实例:模板赋值、内容过滤和替换、动态布局、继承--20180530-23:50发布(0529作业)

lilove的博客
lilove的博客原创
2018年05月31日 00:14:212990浏览

主题:

实例演示: 

  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}

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议