【问题标题】:How to setup a main controller in HMVC CodeIgniter如何在 HMVC CodeIgniter 中设置主控制器
【发布时间】:2012-06-13 06:15:28
【问题描述】:

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

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

<?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;
    }   
}

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

【问题讨论】:

    标签: php codeigniter


    【解决方案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/');
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2011-10-21
        • 1970-01-01
        • 2018-05-02
        • 1970-01-01
        • 2013-08-13
        • 1970-01-01
        相关资源
        最近更新 更多