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("登陆失败!");//默认跳转到上一个界面
            }
        }
    }
}                           

  现在许多网页,需要在登录情况下某些功能才能使用,所以某些网页需要未登录状态自动跳转登录功能:

我们利用面向对象的继承特性,新建父类Base.class.php

<?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;
        }
    }
}

  子类继承:

<?php
namespace HomeController;
use HomeControllerBaseController;
class IndexController extends BaseController{   //index继承分类base
     
    public function index(){
       echo session("uid");
    }
     
}

  二、父类模板继承

<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>

  

绿色的为头部 ,蓝色为尾部中间即为内容

比如我们中间加上一个其余颜色的div元素:

<?php
namespace HomeController;
use HomeControllerBaseController;
class IndexController extends BaseController{
     
    public function index(){
       $this->show();
    }
     
}

  

<?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);
    }
     
}

  

<extend name="Base:base" />
<block name="tou">
    <style type="text/css">
        #nr{
            100%;
            height:200px;
            background-color:yellow;
            }
    </style>
</block>
 
<block name="neirong">
    <div id="nr" ></div>
</block>

  


原文地址:https://www.cnblogs.com/rose1324/p/8695258.html