TP框架---View视图层---模板继承

当我们做动态页面时,我们会发现一个网站的头部和尾部是相同的,那么我们如何用tp框架来做模板呢 ?

先看一下注意事项:

(1)每个区块由<block></block>标签组成

(2)子模板中使用extend标签继承模板

(3)注释语法:{/* 注释内容 */ } {// 注释内容 } 

一、看一下基本的模板继承

(1)先做出模板页面  Home/View/Index/base.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--放标题-->
<title><block name="title">无标题文档</block></title>
<style type="text/css">
#head {100%; height:100px; background-color:blue;}
#footer {100%; height:100px; background-color:red;}
</style>
 <!--用于放js、css样式-->
<block name="tou"></block>

</head>

<body>

<div id="head">
	<!--从数据库读取数据-->
	<foreach name="arr" item="vo" >
	<span>{$vo.aname}</span> <!-- 显示输出的名称,主键值查出来是小写 -->
	</foreach>
</div>
<!--这是需要依据页面变化的内容-->
<block name="nr"></block>

<div id="footer"><h2>尾部</h2></div>
</body>
</html>

 (2)做操作方法 Home/Controller/IndexController.class.php

<?php
namespace HomeController;
use ThinkController;
class IndexController extends Controller {
          public function test(){
		
		$this->base();//继承父模版
		$this->show();
	}
	
	public function base(){ //父模版
		$m = M("bumen");
		$arr = $m->select();
		$this->assign("arr",$arr);
		//$this->show();
	}
}

 (3)做子页面   Home/View/Index/test.html

<!--调用模板-->
<extend name="base" />
<block name="title">子页面</block>
<block name="tou">
	<style type="text/css">
	#nr{100%; height:400px; background-color:yellow;}
	</style>
</block>
<block name="nr">
<div id="nr"></div>
</block>

效果如下:

 

(二)举例:删除和修改

(1)先做显示页面    Home/View/Index/mains.html

<extend name="base" />

<block name="nr">
	<table width="100%" border="1">
		<tr>
			<td>代号</td>
			<td>名称</td>
			<td>价格</td>
			<td>油耗</td>
			<td>价格</td>
			<td>操作</td>
		</tr>
		<!--name表示数组名称  item表示遍历出来的每一个小数组-->
		<foreach name="attr" item="v">
			<tr>
				<td>{$v.code}</td>
				<td>{$v.name}</td>
				<td>{$v.brand}</td>
				<td>{$v.oil}</td>
				<td>{$v.price}</td>
                   <!--用get方式传值--> <td><a href="__CONTROLLER__/del/code/{$v.code}">删除</a><a href="__CONTROLLER__/upd/code/{$v.code}">修改</a></td> </tr> </foreach> </table> </block>

 (2)做操作方法 Home/Controller/IndexController.class.php

<?php
namespace HomeController;
use ThinkController;
class IndexController extends Controller {
       public function mains(){
		$this->base();
		$m = M("car");
		$arr = $m->select();
		$this->assign("attr",$arr);
		$this->show();
	}
	public function del($code){
                //$code 以形参的方式传值
		$m = M("car");
		if($m->delete($code)){
			$url = U("mains");
                        //第二个参数,表示返回的路径;第三个参数:表示停留时间
			$this->success("删除成功!",$url);
		}else{
			$this->error("删除成功!");//删除不用写第二个参数,默认返回上一个页面
		}
	}
	
	public function upd(){
		//显示当前模版信息
		$m = M("car");
                 //get方式取到值
		$code = $_GET["code"];
		$attr = $m->find($code);
                //注册变量
		$this->assign("attr",$attr);
		if(empty($_POST)){//判断是否有post传递的数据
			$this->show();
		}else{
			//修改,自动获取表单数据
			$m->create();
			$m->save();
		}
	}
}        

 (3)修改页面 Home/View/Index/upd.html

<extend name="base" />
<block name="nr">
	<form action="__ACTION__" method="post">
		<div><input type="hidden" name="Code" value="{$attr.code}"/></div>
		<div>名称:<input type="text" name="Name" value="{$attr.name}"/></div>
		<div>系列:<input type="text" name="Brand" value="{$attr.brand}"/></div>
		<div>油耗:<input type="text" name="Oil" value="{$attr.oil}"/></div>
		<div>价格:<input type="text" name="Price" value="{$attr.price}"/></div>
		<input type="submit" value="修改"/>
	</form>
</block>

 效果如下:

点击修改,进入修改页面

原文地址:https://www.cnblogs.com/zhaohui123/p/7153884.html