TP父类及模板继承
一、TP父类方法继承
session用法
用登录页面做例子
<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller{
public function login(){
//显示页面,实现登录
if(empty($_POST)){
$this->show();
}else{
//处理登录逻辑
$uid = $_POST["uid"];
$pwd = $_POST["pwd"]; $db = D("Users");
$arr = $db->find($uid);
if($arr["pwd"]==$pwd&&!empty($pwd)){ session("uid",$uid);
//启动session $url = U("Index/index");//不同控制器下的方法要写控制器名
//不在不同模块下要加上模块名
$this->success("登录成功!",$url);
}else{
$this->error("登陆失败!");//默认跳转到上一个界面
}
}
}
}
在以后做项目中有可能做好多页面都需要加session,为了减少代码量可以做个父类,让后面的方法继承就可以了
新建个父类
<?php
namespace Home\Controller;
use Think\Controller;
class BaseController extends Controller{ public function __construct(){
parent::__construct();
if(session("?uid")){ }else{
$this->redirect('Login/login',array(),0,'');
exit;
}
}
}
index方法继承
<?php
namespace Home\Controller;
use Home\Controller\BaseController;
class IndexController extends BaseController{ public function index(){
echo session("uid");
} }
登录后
如果直接打开登陆后的页面,会直接跳转回登录页
二、父类模板继承
新建新的文件
<!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></title>
<block name="tou"></block>
</head> <body>
<div style="width:100%;height:60px;background-color:green;"></div> <block name="neirong"></block>
<div style="width:100%;height:100px;background-color:blue;"></div>
</body>
</html>
<?php
namespace Home\Controller;
use Home\Controller\BaseController;
class IndexController extends BaseController{ public function index(){
$this->show();
} }
<extend name="Base:base" />
<block name="tou">
<style type="text/css">
#nr{
width:100%;
height:200px;
background-color:yellow;
}
</style>
</block> <block name="neirong">
<div id="nr" ></div>
</block>
<?php
namespace Home\Controller;
use Think\Controller;
class BaseController extends Controller{ public function __construct(){
parent::__construct();
if(session("?uid")){ }else{
$this->redirect('Login/login',array(),0,'');
exit;
}
//父类模板所需要的数据
$db = D("rules");
$arr = $db->select();
$this->assign("menu",$arr);
} }
<!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></title>
<block name="tou"></block>
</head> <body>
<div style="width:100%;height:60px;background-color:green;">
<foreach name="menu" item="v">
<span style="color:#fff;">{$v.name}</span>
</foreach>
</div> <block name="neirong"></block>
<div style="width:100%;height:100px;background-color:blue;"></div>
</body>
</html>
TP父类及模板继承的更多相关文章
- tp框架之模板继承
模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区 ...
- tp框架---View视图层---模板继承(举例说明)
当我们做动态页面时,我们会发现一个网站的头部和尾部是相同的,那么我们如何用tp框架来做模板呢 ? 先看一下注意事项: (1)每个区块由<block></block>标签组成 ( ...
- tp框架视图层view——模板继承
在做网站的时候,每个网站都有头部和尾部,也就是菜单栏和页脚,网站的各个子网页的头部和尾部基本就是一样的,所以tp框架提供了一种模板继承的方法: 1.首先在View的Main文件夹下建立一个base.h ...
- Django 中url补充以及模板继承
Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...
- Django(五)框架之模板继承和静态文件配置
https://www.cnblogs.com/haiyan123/p/7731959.html 一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% end ...
- Django框架之模板继承和静态文件配置
一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...
- thinkPHP框架 简单的删除和修改数据的做法 和 模板继承的意思大概做法
BiaodanController.class.php控制器页面 <?php namespace Admin\Controller; use think\Controller; class Bi ...
- Django框架----模板继承和静态文件配置
母板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- Python学习---django模板继承180123
django模板继承 --20180123 a.include 模板标签 b.extend(继承)模板标签 ------include 模板标签 该标签允许在(模板中)包含其它的模板的内容. 标签的 ...
随机推荐
- linux fix the superblock by dumpe2fs fsck
It seems that you have a bad superblock. To fix this: Firstly, boot into a live CD or USB Find out y ...
- 如何通过钉钉扫码登录odoo
更加方便快捷的登录odoo,实现免密码登录,有需要此模块朋友加我微信18310744639 1.首先你需要一个钉钉管理员权限,以便获取appid, appsecret,corpid, corpsecr ...
- STLの应用
QAQ因为绝望地发现好像这些应用都没有题目...所以就专门开了个随笔存题面qwq 谁的孙子最多 给定一棵树,其中1号节点是根节点,问哪一个节点的孙子节点最多,有多少个.(孙子节点,就是儿子节点的儿子节 ...
- Linux中的轻量级进程
在Linux中,轻量级进程可以是进程,也可以是线程.我们所说的线程,在Linux中,其实是轻量级进程之间共享代码段,文件描述符,信号处理,全局变量时: 如果不共享,就是我们所说的进程. 进程是资源管理 ...
- Redis入门到高可用(二)—— Redis启动及使用
1. 三种启动方式 ♦️ 最简启动 ./redis-server 使用Redis默认配置进行启动; ♦️ 动态参数启动 * redis-server --port 6380 更改端口为6380并 ...
- oracle sql小结(主要讲横列转换的例子)group by以及wmsys.wm_concat()的使用
---计算九月每个电厂的数量select f_dcname,count(f_dcname) as 九月份的数量 from W_EC_PLACESTATION_COLLECT twhere f_coll ...
- v-show 和 v-if 对 v-chart的影响
借鉴:https://blog.csdn.net/xiaxiangyun/article/details/78909991 使用v-show控制tab切换 其中一个tab数据请求后显示第二个tab,第 ...
- Spark DataFrame列的合并与拆分
版本说明:Spark-2.3.0 使用Spark SQL在对数据进行处理的过程中,可能会遇到对一列数据拆分为多列,或者把多列数据合并为一列.这里记录一下目前想到的对DataFrame列数据进行合并和拆 ...
- Python Socket通信黏包问题分析及解决方法
参考:http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5 1.黏包的表现(以客户端远程操作服务端命令为例) 注:只有在TCP协议通信的 ...
- 软RAID管理命令mdadm详解
软RAID管理命令mdadm详解 mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令.但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的 ...