zoukankan      html  css  js  c++  java
  • 将j-ui(dwz)套用到thinkphp注意事项

    目前我用的 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 做的代码移植工作比较多,其他人好像都在混奖状呢,呵呵

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

  • 相关阅读:
    js常见函数使用
    js数组与函数
    移动端响应式布局
    移动开发之rem布局
    移动flex布局
    移动流式布局
    [剑指offer] 矩阵覆盖
    [剑指offer] 变态跳台阶
    [剑指offer] 跳台阶
    [剑指offer] 斐波那契数列
  • 原文地址:https://www.cnblogs.com/myzerg/p/3534490.html
Copyright © 2011-2022 走看看