將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 做的代碼移植工作比較多,其他人好像都在混獎狀呢,呵呵

希望他越來越好,幫助文件能寫的更詳細,更多些,更有耐心些, 有償服務的 字體能低調些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM