博客列表 >模板赋值与模板内容过滤与替换技术、模板动态布局与模板继承技术—2018年6月3日15时21分

模板赋值与模板内容过滤与替换技术、模板动态布局与模板继承技术—2018年6月3日15时21分

Gee的博客
Gee的博客原创
2018年06月03日 15:34:50992浏览

1.模板赋值:

1.1模板:

实例

我的姓名是:<span style="color:red">{$name}</span>
<br>
我的工资是:<span style="color:red">{$salary}</span>

运行实例 »

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

1.2

实例

<?php
namespace app\index\controller;
use think\Controller;

class Index  extends Controller
{
    //模板赋值
    public function demo2()
    {
        //1.assign('模板变量名',值)
        $name = 'peter';
        $this->view->assign('name', $name);

        //2.传参赋值: fetch('模板',[参数数组])
        //3.对象赋值:
        // $this->view====View的对象
        $this->view->salary = 5000;

        return $this->view->fetch(); //不传参数,指的是默认模板 index@index/demo2
    }
}

运行实例 »

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

2.模板过滤与替换

2.1模板同上

2.2

实例

<?php
namespace app\index\controller;
use think\Controller;

class Index  extends Controller
{
   //模板过滤与替换
    public function demo3()
    {
        //tp51之前,直接删除了替换功能,采用config/template.php进行配置
        //将模板中的'xiaoming'替换成:小明
        
        $this->view->name = 'xiaoming';
        $this->view->salary = 8000;

        // $filter = function($content) {
        //  return str_replace('xiaoming', '小明', $content);
        // };

        // return $this->filter($filter)->fetch();
        return $this->filter(function($content) {
            return str_replace('peter', '', $content);
        })->fetch(); //为空就是过滤
    }
}

运行实例 »

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

3.模板动态布局

3.1模板header

实例

<style type="text/css">
	.header {
		width: 800px;
		height: 60px;
		margin: auto;
		background: wheat;
		text-align: center;
		line-height: 60px;
	}
</style>
<div class="header">网站头部</div>

运行实例 »

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

3.2模板footer

实例

<style type="text/css">
	.footer {
		width: 800px;
		height: 60px;
		margin: auto;
		background: wheat;
		text-align: center;
		line-height: 60px;
	}
</style>
<div class="footer">网站底部</div>

运行实例 »

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


3.3模板layout

实例

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

运行实例 »

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

3.4模板demo

实例

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

运行实例 »

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

3.5

实例

<?php
namespace app\index\controller;
use think\Controller;

class Index  extends Controller
{
    //模板布局
    public function demo4()
    {
        /**
         * 一、全局配置
         * 1.config/template.php
         * 模板布局的配置
         * 'layout_on' => true, //开启模板布局
         * 'layout_name' => 'layout', //指定模板布局文件
         *
         * 二、模板标签进行配置
         * 1.不依赖于全局配置,在模板中直接用标签进行控制
         * 2.{layout name="布局模板名" /}
         * 3.关闭布局:{__NOLAYOUT__}
         *
         * 三、动态配置
         * 1.不需要再模板配置文件中进行任何配置
         * 2.不需要再当前模板中添加任何标签
         */
        //开启布局
        // $this->view->engine->layout(true);
        // $this->view->engine->layout('layout', '{__TEXT__}');
        // 关闭
        // $this->view->engine->layout(false);
        
        // return $this->view->fetch();

        return $this->view //调用视图对象
            ->engine //模板引擎对象
            ->layout(true) //开启模板布局
            ->fetch('index\demo4'); //渲染模板,模板表达式至少要给到控制器级别
    }
}

运行实例 »

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

4.模板继承

4.1模板base

实例

{//基础模板中只允许出现block标签}

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

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

{block name="course"}课程名称:{/block} <br>

{block name="name"}朱老师{/block}

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

{//在父模板中凡是写在block之外的内容在子模板中全部原样输出}

运行实例 »

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

4.2模板demo

实例

{extend name="base" /}

{//将父模板中的main区块进行重写}
{block name="main"}
	<h1 style="text-align: center">我是子模板的网站的主体部分</h1>
{/block}

{block name="course"}
	{__block__} PHP编程
{/block}

{//将父模板中的name区块删除}
{block name="name"}{/block}

{//在子模板中区块的顺序不重要}
{//在子模板中凡是写在block之外的内容全部忽略}
<a href="">12345</a>

运行实例 »

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

4.3

实例

<?php
namespace app\index\controller;
use think\Controller;

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

运行实例 »

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


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