如何在HMVC CodeIgniter中设置主控制器

时间:2012-06-13 06:15:28

标签: php codeigniter

我在CodeIgniter https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

中使用HMVC

如何设置在访问仅用户页面时自动运行的控制器。 这是为了检查用户当前是否登录。我已经帮助检查用户是否已登录:

<?php 
if(!defined('BASEPATH')) exit('No direct script access allowed');
if (!function_exists('is_logged_in')){
    function is_logged_in(){
        $CI =& get_instance();
        $logged_in = FALSE;
        $user_data = $CI->session->userdata('logged_in');
        if(!empty($user_data)){
            $logged_in = TRUE;
        }
        return $logged_in;
    }   
}

但我唯一知道的是在每个模块的每个控制器的构造函数上调用此方法。我会在每个控制器上重复相同的代码,只是为了检查用户是否已登录。基本上我希望每次用户尝试访问模块目录中的内容时都会调用此函数。

2 个答案:

答案 0 :(得分:1)

一个选项是扩展主控制器类(我猜是CI_contorller)并在该控制器的构造函数中调用此辅助方法。然后从这个新控制器扩展所有其他用户相关的控制器。

答案 1 :(得分:1)

您可以使用_remap()。如果您使用的话,可以将它放在MY_Controller中,有关更多信息,请阅读Controller User Guide

这是你可以开始的东西。

function _remap($method)
{
    if (method_exists($this, $method) && $this-my_custom_helper->is_logged_in())
    {
        $this->$method();
    }
    else
    {
        redirect('/auth/login/');
    }
}