tp父类及模板继承

一、TP父类方法继承

session用法

用登录页面做例子

 
<?php
namespace HomeController;
use ThinkController;
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 HomeController;
use ThinkController;
class BaseController extends Controller{
     
    public function __construct(){
        parent::__construct();
        if(session("?uid")){
             
        }else{
            $this->redirect('Login/login',array(),0,'');
            exit;
        }
    }
}

 index方法继承

 
<?php
namespace HomeController;
use HomeControllerBaseController;
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="100%;height:60px;"></div>
     
    <block name="neirong"></block>
    <div style="100%;height:100px;"></div>
    </body>
</html>

 

 
<?php
namespace HomeController;
use HomeControllerBaseController;
class IndexController extends BaseController{
     
    public function index(){
       $this->show();
    }
     
}
 
<extend name="Base:base" />
<block name="tou">
    <style type="text/css">
        #nr{
            100%;
            height:200px;
            
            }
    </style>
</block>
 
<block name="neirong">
    <div id="nr" ></div>
</block>

 

 
<?php
namespace HomeController;
use ThinkController;
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="100%;height:60px;">
        <foreach name="menu" item="v">
            <span style="color:#fff;">{$v.name}</span>
        </foreach>
    </div>
     
    <block name="neirong"></block>
    <div style="100%;height:100px;"></div>
    </body>
</html>

 

原文地址:https://www.cnblogs.com/palpitate/p/8594201.html