将j-ui(dwz)套用到thinkphp注意事项

时间:2021-06-14 15:53:52

目前我用的 thinkphp 版本是  3.1.3

J-UI  dwz 版本好像是 1.4

现在 j-ui有 thinkphp的例子了,请尽量以他们原创为主,我这里都是一些自己搜集和自己钻研的土办法,

1 更改  Action.class.php 中 ajaxReturn函数 为

protected function ajaxReturn($data,$type='') {
if(func_num_args()>2) {// 兼容3.0之前用法
$args = func_get_args();
array_shift($args);
$info = array();
$info['data'] = $data;
$info['info'] = array_shift($args);
$info['status'] = array_shift($args);
$data = $info;
$type = $args?array_shift($args):'';
} //
//较原版增加部分--
$data['statusCode'] = 1; //
$data['navTabId'] = $_REQUEST['navTabId'];//
$data['rel'] = $_REQUEST['rel']; //
$data['callbackType'] = $_REQUEST['callbackType']; //
$data['forwardUrl'] = $_REQUEST['forwardUrl']; //
$data['confirmMsg'] = $_REQUEST['confirmMsg'];//
$data['message'] = $data['info']; //840206883@qq.com //较原版增加部分-- //
if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
switch (strtoupper($type)){
case 'JSON' :
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data));
case 'XML' :
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler.'('.json_encode($data).');');
case 'EVAL' :
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
default :
// 用于扩展其他返回格式数据
tag('ajax_return',$data);
}
}

2 更改 ContentReplaceBehavior 中 templateContentReplace 函数为

    protected function templateContentReplace($content) {
// 系统默认的特殊变量替换
$replace = array(
'__TMPL__' => APP_TMPL_PATH, // 项目模板目录
'__ROOT__' => __ROOT__, // 当前网站地址
'__APP__' => __APP__, // 当前项目地址
'__GROUP__' => defined('GROUP_NAME')?__GROUP__:__APP__,
'__ACTION__' => __ACTION__, // 当前操作地址
'__SELF__' => __SELF__, // 当前页面地址
'__URL__' => __URL__,
'../Public' => APP_TMPL_PATH.'Public',// 项目公共模板目录
'__PUBLIC__' => __ROOT__.'/Public',// 站点公共目录
'__MODULE__' => MODULE_NAME, // 这句是亮点
);
// 允许用户自定义模板的字符串替换
if(is_array(C('TMPL_PARSE_STRING')) )
$replace = array_merge($replace,C('TMPL_PARSE_STRING'));
$content = str_replace(array_keys($replace),array_values($replace),$content);
return $content;
}

3 检查你的 tpl/index/index.html 中 是否有这几个js 函数

<script type="text/javascript">
function fleshVerify(){
//重载验证码
$('#verifyImg').attr("src", '__APP__/Public/verify/'+new Date().getTime());
}
function dialogAjaxMenu(json){
dialogAjaxDone(json);
if (json.statusCode == DWZ.statusCode.ok){
$("#sidebar").loadUrl("__APP__/Public/menu");
}
}
function navTabAjaxMenu(json){
navTabAjaxDone(json);
if (json.statusCode == DWZ.statusCode.ok){
$("#sidebar").loadUrl("__APP__/Public/menu");
}
} $(function(){
DWZ.init("__PUBLIC__/dwz/dwz.frag.xml", {
loginUrl:"__APP__/Public/login_dialog", loginTitle:"登录", // 弹出登录对话框
// loginUrl:"__APP__/Public/login", //跳到登录页面
statusCode:{ok:1,error:0},
pageInfo:{pageNum:"pageNum", numPerPage:"numPerPage", orderField:"_order", orderDirection:"_sort"}, //【可选】
debug:false, // 调试模式 【true|false】
callback:function(){
initEnv();
$("#themeList").theme({themeBase:"__PUBLIC__/dwz/themes"});
}
});
});
</script>

这样基本就差不多了,可以正常刷新,显示 ajax返回的 success  和 error信息了

如果要关闭 dialog ,可以在 dialog  form页面上放这个东西

<input name="callbackType" type="hidden" value="closeCurrent" />

成功执行完就自动关闭dialog了

总体来说 dwz是个不错的框架 ,不知道现在为啥改名 j-ui,导致seo一塌糊涂,他的js方面我用了快4年(从他第一个版本起),感觉进步不太大,

最近几个月经常生气来想换 bootstrap 下的后台框架,每次到最后都是安慰自己,支持国产支持国产,希望大家也辛苦支持国产

读了他的一些代码,感觉zhanghuihua@msn.com 做的代码移植工作比较多,其他人好像都在混奖状呢,呵呵

希望他越来越好,帮助文件能写的更详细,更多些,更有耐心些, 有偿服务的 字体能低调些。