再次登录后,codeigniter中的语言文件已更改

再次登录后,codeigniter中的语言文件已更改,codeigniter,Codeigniter,在登录(auth Controller)时,我使用助手函数将一些语言文件添加到会话中 if (!function_exists('load_modul_languagefile')) { function load_modul_languagefile($modulname,$systemmodul=false){ $ci =& get_instance(); if($systemmodu

在登录(auth Controller)时,我使用助手函数将一些语言文件添加到会话中

if (!function_exists('load_modul_languagefile')) 
    {
        function load_modul_languagefile($modulname,$systemmodul=false){
            
            $ci =& get_instance();
            if($systemmodul===false)
            {                
                $ci->db->select('systemmodul');
                $ci->db->from('table');
                $ci->db->where('controller_name',$modulname);
                $query=$ci->db->get();
                if($query->num_rows()>0){ $systemmodul=1; }
            }

            if($systemmodul==1){   $modulname='sysfile';  }
            
            //make sure the lang file already exists before including
            $lang=$ci->config->item('language');
            if(file_exists(APPPATH.'language/'.$lang.'/'.$modulname.'_lang.php'))
            {
                $ci =& get_instance();
                $ci->lang->load($modulname.'_lang',$lang);    
                return true;
            }
            else
            {   //may include a systemlog info
                echo"no file ->".APPPATH.'language/'.$lang.'/'.$modulname.'_lang.php'; 
                return false; 
            }     
        }
在auth controller中调用Helper函数

if(!load_modul_languagefile($mod['controller_name'],$mod['systemmodul'])){ echo"langfile error: ".$mod['controller_name'].",".$mod['systemmodul']; }    
$langfiles=array('site');
$modules = get_all_modules(); 
                        foreach ($modules as $mod)
                        {   
                            if($mod['active']!=1 || $mod['systemmodul']==1){ continue; }

                        array_push($langfiles,$mod['controller_name']);

                    }
                    $this->lang->load($langfiles, $language);
这是helper函数

if (!function_exists('load_modul_languagefile')) 
    {
        function load_modul_languagefile($modulname,$systemmodul=false){
            
            $ci =& get_instance();
            if($systemmodul===false)
            {                
                $ci->db->select('systemmodul');
                $ci->db->from('table');
                $ci->db->where('controller_name',$modulname);
                $query=$ci->db->get();
                if($query->num_rows()>0){ $systemmodul=1; }
            }

            if($systemmodul==1){   $modulname='sysfile';  }
            
            //make sure the lang file already exists before including
            $lang=$ci->config->item('language');
            if(file_exists(APPPATH.'language/'.$lang.'/'.$modulname.'_lang.php'))
            {
                $ci =& get_instance();
                $ci->lang->load($modulname.'_lang',$lang);    
                return true;
            }
            else
            {   //may include a systemlog info
                echo"no file ->".APPPATH.'language/'.$lang.'/'.$modulname.'_lang.php'; 
                return false; 
            }     
        }
因此,在将其放入auth控制器后,我将使用

$all_lang_array=$this->lang->language;
echo"All lang array;<br>";
print_r( $all_lang_array);    
die("");
$all\u lang\u array=$this->lang->language;
回显“所有语言数组;
”; print\u r($all\u lang\u数组); 死亡(“”);
因此,所有文件都已正确加载,并且数组具有应有的内容

现在,重定向到子文件夹views/mydestination后,此信息将不再可见

如果我试图获得与auth中相同的数据(在views/includes/_侧栏中像上面那样打印),我只会收到“fixfile”-languagfile的内容。不再加载所有其他文件

我不明白为什么语言数组的值现在会减少


可能是
$ci=&get_instance()有问题实例?

看来,我已经找到了解决方法

我已经更改了将语言文件从auth控制器加载到 core>my_控制器

if(!load_modul_languagefile($mod['controller_name'],$mod['systemmodul'])){ echo"langfile error: ".$mod['controller_name'].",".$mod['systemmodul']; }    
$langfiles=array('site');
$modules = get_all_modules(); 
                        foreach ($modules as $mod)
                        {   
                            if($mod['active']!=1 || $mod['systemmodul']==1){ continue; }

                        array_push($langfiles,$mod['controller_name']);

                    }
                    $this->lang->load($langfiles, $language);
目前看来效果不错