tp5.1 在子类控制器中获取父类渲染到模板的变量
Posted makalochen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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源码。可以找到
其实有方法可以获取的
/**
* 取得模板显示变量的值
* @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 在子类控制器中获取父类渲染到模板的变量的主要内容,如果未能解决你的问题,请参考以下文章