码迷,mamicode.com
首页 > 其他好文 > 详细

tp5.1 在子类控制器中获取父类渲染到模板的变量

时间:2020-06-23 13:25:20      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:tp5   类型   赋值   dump   name   mic   pac   ase   ram   

情况如下:

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

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

<?php

namespace app\common\controller;

use app\common\model\UserModel;
use think\Controller;

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源码。可以找到

技术图片

其实有方法可以获取的

/**
* 取得模板显示变量的值
* @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();
}

技术图片

tp5.1 在子类控制器中获取父类渲染到模板的变量

标签:tp5   类型   赋值   dump   name   mic   pac   ase   ram   

原文地址:https://www.cnblogs.com/makalochen/p/13181308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!