将j-ui(dwz)套用到thinkphp注意事项
目前我用的 thinkphp 版本是 3.1.3
J-UI dwz 版本好像是 1.4
现在 j-ui有 thinkphp的例子了,请尽量以他们原创为主,我这里都是一些自己搜集和自己钻研的土办法,
1 更改 Action.class.php 中 ajaxReturn函数 为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 |
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‘ ]; // //较原版增加部分-- // 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 下的后台框架,每次到最后都是安慰自己,支持国产支持国产,希望大家也辛苦支持国产
读了他的一些代码,感觉[email protected] 做的代码移植工作比较多,其他人好像都在混奖状呢,呵呵
希望他越来越好,帮助文件能写的更详细,更多些,更有耐心些, 有偿服务的 字体能低调些。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。