再次登录后,codeigniter中的语言文件已更改
在登录(auth Controller)时,我使用助手函数将一些语言文件添加到会话中再次登录后,codeigniter中的语言文件已更改,codeigniter,Codeigniter,在登录(auth Controller)时,我使用助手函数将一些语言文件添加到会话中 if (!function_exists('load_modul_languagefile')) { function load_modul_languagefile($modulname,$systemmodul=false){ $ci =& get_instance(); if($systemmodu
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);
目前看来效果不错