欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模板赋值及模板布局-2018年5月30日15点30

程序员文章站 2022-06-02 18:51:18
...

模板赋值

关键字:assign('name',$name);//模板赋值  终极简化 ;         fetch('模板表达式')指定一个模板进行内容输出,以模块/view目录为根目录,模板表达式:模块@控制器/操作方法,return View::fetch('index@index/demo1',['name'=>$name]);

在controller下创建->view->index->demo1.html文件,与controller->Index.php->demo1()方法相对应

demo1/2.html

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


Index.php

<?php
namespace app\index\controller;
use think\facade\View;//相当于给视图类做了一个静态代理,降内部方法全部看成静态的进行调用

use think\Controller;

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

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

    	return $this->view->fetch();//index@index/demo2
    }

    //模板替换与过滤  过滤的方式模拟替换
    public function demo2()
    {
    	//tp51之前,直接删除了替换功能,采用config/template.php进行配置
    	
    	$this->view->name = 'hyman';
    	$this->view->salary =8000;
		//将模板中的hyman替换成:liu
		$filter = function($content){
			return str_replace('hyman','liu',$content);
		};

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


创建:controller->view->public->header.html/footer.html                view->layout.html/base.html     view->index->demo4.html/demo5.html 分别对应动态布局和模板继承

模板动态布局:

layout.html

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

demo4.html

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

Index.php

 public function demo4()
{
         * 动态配置
    	 * 1,不需要在模板文件中做任何配置
    	 * 2,不需要在当前模板中添加任何标签 
    	 */
    	//开启布局
    	// $this->view->engine->layout(true);
    	//$this->view->engine->layout('layout','{__TEXT__}');
    	//关闭布局
    	// $this->view->engine->layout(false);

    	// return $this->view->fetch('demo4');

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

}

模板继承:

base.html

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

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



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

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

{block name="name"}小学生:{/block}


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

demo5.html

{extend name="base" /}

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

{block name="name"}{/block}


{//在子模板中写在block之外的的内容全部被忽略,父模板中会原样输出}
{block name="course"}
	<h2 style="text-align:center">{__block__}PHP编程</h2>
{/block}

Index.php

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