stmadman 发表于 2009-12-27 01:43:10

视图SESSION的问题

header.php   main.php   
在main.php 中include('header.php');

现在header.php中有一段判断如果用户登录 就显示用户的个人信息   如果没登录就显示登录框。

我在控制器里面$data['username'] = $this->session->userdata('username');    然后在模板里面判断username   

问题是   我每个页面只要带头部的都这样写非常麻烦啊   有没有方便的方法 不用每次都写一遍的?

yangball 发表于 2009-12-27 01:55:43

同问,帮顶。。。。哥,这么夜啊?????
我是刚学习CI的。共勉。。。。。

Hex 发表于 2009-12-27 09:27:54

楼主需要的是 HMVC
参考 http://codeigniter.org.cn/forums/thread-1319-1-1.html

stmadman 发表于 2009-12-27 10:07:04

HEX没明白我的需求吧?我只是想判断一下在每个头文件判断SESSION

Hex 发表于 2009-12-27 10:15:59

对啊,就是 HMVC 啊,你应该做一个 header 的模块,然后在这个模块里判断 Session。
而现在是 header 视图,视图虽然可以判断 session,但更复杂的操作就不适合放到视图里了。

$data['username'] = $this->session->userdata('username');
这句话就可以放到模块里,而不用放到控制器里,这样你的 header 模块放到哪里都可以,这个和“控件”的概念很像。

stmadman 发表于 2009-12-27 10:20:57

明白了非常感谢

stmadman 发表于 2009-12-27 10:21:30

这个1.7.2可以使用吗、

stmadman 发表于 2009-12-27 11:10:04

我用了HMVC做了一个header模块

文件:modules/header/controllers/index.php

class Header_Index_module extends Module{

        function __construct()
        {
                parent::__construct();
        }

        function index()
        {
                $this->load->library('session');
                $userData = array(
                        'username' => $this->session->userdata('username'),
                        'email' => $this->session->userdata('email'),
                );

                $this->load->view('view_header',$userData);
        }
}


视图文件:modules/header/views/view_header.php

<div class="header">
<?php if($username): ?>
已经登录
<?php endif; ?>
</div>



系统提示:
A PHP Error was encountered
Severity: Notice

Message: Undefined property: Header_Index_module::$session

Filename: controllers/index.php

Line Number: 17

stmadman 发表于 2009-12-27 11:35:01

是不是   HEX的HMVC不支持SESSION?

visvoy 发表于 2009-12-27 12:24:17

你要是确定每个页面都要用这段代码,那就用hook,把这段代码hook到post_controller_constructor
继续发问前,请先看hook手册:http://codeigniter.org.cn/user_guide/general/hooks.html
页: [1] 2
查看完整版本: 视图SESSION的问题