解决JS中使用ThinkPHP语言问题

浏览:1983 发布日期:2014/07/01 分类:技术分享
首先头部公共模板中引入这一句JS<script type="text/javascript" src="{:URL('Api/Attachment/langjs',array('module'=>MODULE_NAME,'lang'=>LANG_SET))}"></script> {//引入当前模块语言JS文件}从上面我是引入了一个JS 地址他指向了我的Api模块的Attachment控制器的langjs方法,参数包含了 name 当前模块名 lang 语言方式
现在在Api模块的Attachment控制器的langjs方法写如下代码$lang   = I('get.lang');  //获取语言方式
$module = I('get.module'); //获取模块名
$filename = DATA_PATH.$mLang->cachePath.'./lang/'.$lang.'/'.$module.'_lang.js'; //获取文件路径,自己定义,这是我的规则。因为语言入库了,根据$mLang模型的缓存路径设置,方便后台添加语言自动更新
if(!file_exists($filename)){ //如果没有生成的对应语言JS文件,开始重新生成
    $jsCon = 'var ';
    $langcon = L(); //获取所有语言数组,此方法会获取到Api模块和公共语言,因为当前是API模块。
    $module_lang = include APP_PATH."./".$module.'/Lang/'.$lang.'.php'; //获取模块的语言 ,如果你的模块语言文件有变动自行修改
     $langcon = array_merge($langcon, $module_lang); //合并语言
     $jsCon = 'var '; //设置JS初始内容
     foreach ($langcon as $k=>$v){ //遍历语言
            $key = array_keys($langcon);
            $thecount = array_keys($key,$k);
            $dou = count($langcon)  > ($thecount[0]+1) ? ',' : ';';
            $jsCon .= "$k='$v'$dou"; //组装JS内容
    }
    \Common\Lib\FileUtil::insertFile($jsCon,DATA_PATH.$mLang->cachePath.'./lang/'.LANG_SET.'/'.$module.'_lang.js',true); // 创建文件并写入JS内容。FileUtil是个文件类,就创建文件,写入内容等操作,具体就不细说了。
}
//文件处理完毕开始输出
$handle = fopen($filename, "rb");
$filesize = filesize($filename);
$contents = fread($handle, $filesize);
header("content-type:text/javascript");
echo $contents;
fclose($handle);
exit();
最佳答案
评论( 相关
后面还有条评论,点击查看>>