thinkphp 模板布局 传参

tpl下面有个public/header.html我在网站很多页面都需要调用这个头部,用的代码是<includefile="Public:header"/>header.... tpl下面有个public/header.html

我在网站很多页面都需要调用这个头部,用的代码是<include file="Public:header" />
header.html代码用来检测用户是否登录,如果登录了,就显示“首页|退出”,如果未登录,则显示“首页|注册|登录”
代码是
<empty name="data">
<a href='__APP__'>首页|</a>
<a href='__APP__/Login'>登录</a>
<a href="__APP__/Register">注册</a>
<else/>
<a href='__APP__'>首页|</a>
你好<a style="color:blue;">{$data}</a>
<a href="__APP__/Ucenter/loginout">退出</a>
</empty>

比如网站首页,action里代码是
$data=session('name');
if ($data){
$this->data=$data;
}
把是否有session传递到header.html里,请问,因为有很多页面都要调用header.html,难道要在所有的action里都加上
$data=session('name');
if ($data){
$this->data=$data;
}
这段代码吗?请问有什么方法可以集中引用的。谢谢
展开
 我来答
miniappSGOY5BCLsXa9v
推荐于2016-10-14 · TA获得超过102个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:96.6万
展开全部

LZ ,在Lib/Action目录下新建一个父类控制器,比如就叫ExtendAction.class.php,让这个父类控制器继承 Action ,然后在ExtendAction里写一个方法_initialize,代码如下:

class ExtendAction extends Action {
    Public function _initialize(){
        $data=session('name');
if ($data){
            $this->data=$data;
}
    }
}

之后,在其他Action里继承这个父类控制器ExtendAction,比如IndexAction,代码:

class IndexAction extends ExtendAction {
    public function index(){
       $this->display();
    }
}

这样一来,所有继承了ExtendAction 的Action都会执行到父类控制器里的_initialize方法.


thinkphp系统Action类提供了一个初始化方法_initialize接口,可以用于扩展需要,_initialize方法会在所有操作方法调用之前首先执行.

希望帮到你,纯手写,望采纳!

learneroner
高粉答主

2014-02-12 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6572万
展开全部

楼主是通过判断session的方式验证是否登录,

那为什么不直接在模板中进行呢?这样可以避免action中的传参

<if condition="$Think.session.name eq null"> 
    <a href='__APP__'>首页|</a>
    <a href='__APP__/Login'>登录</a>
    <a href="__APP__/Register">注册</a>
<else/>
    <a href='__APP__'>首页|</a>
    你好<a style="color:blue;">{$data}</a>
    <a href="__APP__/Ucenter/loginout">退出</a>
</if>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
双鱼响
2014-02-11
知道答主
回答量:1
采纳率:0%
帮助的人:1407
展开全部
你创建一个父类控制器, 然后所有的控制器都继承这个控制器,在父类控制器里你重写_initialize这个方法,在这个方法里判断一下用户是否登录, 然后把值assign就可以了, 在模板任何地方都是可以用用到这个值的
追问
请问,怎么创建这个父类控制器呢?新手,不太懂。可以的话请发个相关教程的链接,谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式