codeigniter中的动态全局



在codeigniter中拥有动态全局的最佳实践是什么?

我想根据从数据中加载的密钥加载一个带有常量的文件我试过库,但它们在模型初始化之前就已经加载了

我希望它如何工作:

1) 用户登录2) php检查该用户是普通用户(来自数据库)还是管理员3) 如果是常规用户,我将相应地定义全局变量否则我将使用不同的全局变量

当有人登录时,这种情况应该只发生一次。我就是这样做的:

人员登录后,php检查(在同一控制器中)需要如何定义全局变量。它定义了它们,但一旦我从另一个控制器调用这些变量,它们就会被擦除。(我用AJAX调用另一个控制器)哦,我还应该说,当我们同时运行多个AJAX请求时,CI有错误(如果同时使用AJAX,则不能使用CI会话)

所以真正的问题是:我该如何防止它们被删除?

感谢

第一个-简单的部分:

使用AJAX的CodeIgniter数据库会话已经解决(最近)。

第二,关于全球:

我给你的建议是,首先扩展CodeIgniter的CI_Controller类,实现Phil Sturgeon的博客《保持干燥》中概述的技术。完成后,让所有控制器从MY_Controller继承,而不是直接从CI_Controller继承。

然后您可以拥有MY_In_ControllerMY_Out_ControllerMY_Admin_Controller。。。等等从MY_Controller扩展而来,但我离题了。重要的部分是在新的基本控制器中检查登录状态并设置全局。

class MY_Controller extends CI_Controller{
    function __construct(){
        parent::__construct();
        $l = $this->session->userdata("loggedin");
        if((!isset($l))||($l==FALSE)){
            /*user is logged out - set appropriate globals*/
        }
        else{
            /*user is logged in - fetch them from the database and set appropriate globals*/
        }
    }
}

现在,当您创建新的控制器时,例如BlogNewsAbout,您不必每次都设置全局变量,它们将可以在控制器、模型和视图中访问;这一切都是因为父类会照顾它。

相关内容

  • 没有找到相关文章

最新更新