zoukankan      html  css  js  c++  java
  • tp5.1 在子类控制器中获取父类渲染到模板的变量

    情况如下:

    为了方便统一公共类型模板变量的赋值,我们一般会定义个基类,这个基类会渲染一些子类都会用到的模板变量。

    如: 定义一个前置方法,从session中取出uid,并查询渲染到模板变量

    <?php
    
    namespace appcommoncontroller;
    
    use appcommonmodelUserModel;
    use thinkController;
    
    class UserBase extends Controller
    {
        protected $beforeActionList = [
            'init',
        ];
    
        public function init(){
            $uid = session('user_id');
            if(!isset($uid) || empty($uid)){
                return json(['status' => 500, 'msg' => 'uid为空']);
            }
            $user=UserModel::get($uid);
            if($user){
                $this->assign([
                    'user' => $user,
                ]);
            }
        }
    
        protected function successJson($msg = ''){
            return json(['status'=>200,'msg'=>$msg]);
        }
    
        protected function errorJson($msg = ''){
            return json(['status'=>500,'msg'=>$msg]);
        }
    }
    

    那如果子类控制器继承后,想判断父类渲染的模板变量,是否存在或者某个值是否为多少,怎么判断,查找tp源码。可以找到

    image-20200623113621802

    其实有方法可以获取的

    /**
    * 取得模板显示变量的值
    * @access protected
    * @param  string $name 模板变量
    * @return mixed
    */
    public function __get($name)
    {
    	return $this->data[$name];
    }
    
    /**
    * 检测模板变量是否设置
    * @access public
    * @param  string $name 模板变量名
    * @return bool
    */
    public function __isset($name)
    {
    	return isset($this->data[$name]);
    }
    

    如在子类控制器里判断模板变量是否存在

    public function index(){
        dump($this->view->__isset('mediaList'));
        dump($this->view->__isset('user'));
        dump($this->view->__isset('test'));
        return view();
    }
    

    image-20200623114810664

  • 相关阅读:
    玛里苟斯[清华集训2014 Day1]
    bzoj3585 mex
    Luogu 3793 由乃救爷爷
    Luogu5221 Product
    bzoj1834 [ZJOI2010]network 网络扩容
    CF650C Table Compression
    bzoj3211 花神游历各国
    bzoj1066 [SCOI2007]蜥蜴
    hdu2121 Ice_cream's world II
    Luogu2792 [JSOI2008]小店购物
  • 原文地址:https://www.cnblogs.com/makalochen/p/13181308.html
Copyright © 2011-2022 走看看