<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[info] tpAdmin v1.2 正式發布,請前往 github 更新 > >[warning] tpadmin已升級為 1.1,之前 1.0 版本廢棄,不再維護,也不再提供文檔,此文檔僅適用于 v1.1 及以上版本 ## tpAdmin 是什么? tpAdmin 是一個基于 ThinkPHP5.0 正式版和 Hui.admin v2.5 的管理后臺,簡化管理后臺的開發流程,簡化代碼的編寫,提高代碼復用率,同時集成完整的權限管理和其他管理后臺中常用的功能 ## tpAdmin能做什么? tpAdmin 是一個通用管理后臺,不涉及任何死板的前端框架,或許它沒有像 easyUI 這樣的框架那么強大,卻給了你非常靈活的開發模式,允許你加入任何你喜歡的插件、前端組件到框架中去,開發前也不需要看大量篇幅的前端文檔。 **因為它非常靈活,所以你可以利用它開發任何 B/S 架構的管理后臺** ## 特性 ### 后端 * 模板、控制器、模型、驗證器、數據表自動生成 * RBAC 權限管理 * 完美支持多級控制器及多級控制器權限管理 * 支持前置方法 before * 支持方法攔截器,實現請求攔截 * 支持過濾器 * 支持模板主題(需自己按照文檔修改官方源碼使用) * 節點自動掃描與添加 * 七牛上傳及與百度編輯器 (Ueditor) 結合使用 * Excel 一鍵導出和一鍵導入 * 郵件發送( Fsock 和 phpMailer 兩種驅動) * ID 加密解密 * 網站操作日志記錄(自動水平分表) * 圖片上傳管理及回調 ### 前端 * 表單校驗 * 無限層級菜單,完美與后端多級控制器兼容 * 自動面包屑導航 * 基于 layer 的豐富彈層 * 支持 H5 + iframe 自動切換的無刷新上傳 * ajax 請求處理封裝,直接后臺返回數據控制前端頁面處理 * 多窗口辦公 * 隨機字符串生成 * 表格溢出處理 * 圖片預覽 * 二維碼生成 ## 本平臺使用了如下框架或插件、源碼: * ThinkPHP 5.0.2 正式版 * Hui.admin v2.5 * layer * jQuery Validform * 七牛 * ... > 非常感謝這些框架、插件的支持 ## tpadmin官方交流 QQ 群 >[danger] tpadmin官方交流群:518162472 請打廣告的朋友繞道,見一個踢一個,永久拉黑 ![](https://box.kancloud.cn/36441b567943e31a2e4150535c4c7487_240x329.jpg) ##注意 tpadmin 使用了大量的 ajax 請求,本人實測過程中經常遇到 php.ini 文件報警告,導致返回的 json 數據出錯,警告如下: >[warning] Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0 請修改 php.ini 文件里的 always_populate_raw_post_data ,將其值設為 -1 ,一般存在該配置項,直接刪掉前面注釋 PS:不會改谷歌或百度去 **ThinkPHP5.0 正式版有一些不適合管理后臺需求,做了如下修改,請務必修改下面所示,以后升級必須檢查此兩處是否有做修復** >[info] **為了支持 include 標簽引入文件模板自動定位,修改了文件 `thinkphp/library/think/Template.php` 的 `parseTemplateName` 方法:** ``` /** * 分析加載的模板文件并讀取內容 支持多個模板文件讀取 * @access private * @param string $templateName 模板文件名 * @return string */ private function parseTemplateName($templateName) { $array = explode(',', $templateName); $parseStr = ''; foreach ($array as $templateName) { if (empty($templateName)) { continue; } if (0 === strpos($templateName, '$')) { //支持加載變量文件名 $templateName = $this->get(substr($templateName, 1)); } /****************** 修改開始 ********************/ // 解決模板 include 標簽不支持自動定位當前控制器的問題 if (!preg_match("/(\/|\:)/", $templateName)) { $templateName = str_replace(".", DS, \think\Loader::parseName(\think\Request::instance()->controller())) . DS . $templateName; } /****************** 修改結束 ********************/ $template = $this->parseTemplateFile($templateName); if ($template) { // 獲取模板文件內容 $parseStr .= file_get_contents($template); } } return $parseStr; } ``` >[info] **為了支持多級控制器,`\think\Url::build` 方法有bug,`\think\Url::build("one.two.Three")` 會生成 `one.two._three` 的鏈接,正確的應該是 `one.two.three`,修改了文件 `thinkphp/library/think/Loader.php` 的 `parseName` 方法:** **ThinkPHP 5.0.4及以上版本請按此修改:** ``` /** * 字符串命名風格轉換 * type 0 將Java風格轉換為C的風格 1 將C風格轉換為Java的風格 * @param string $name 字符串 * @param integer $type 轉換類型 * @param bool $ucfirst 首字母是否大寫(駝峰規則) * @return string */ public static function parseName($name, $type = 0, $ucfirst = true) { /****************** 修改開始 ********************/ if ($type) { return preg_replace_callback(['/\_([a-zA-Z])/', '/([^.][a-zA-Z]*$)/'], function ($match) use ($ucfirst) { return $ucfirst ? ucfirst($match[1]) : lcfirst($match[1]); }, $name); } else { return strtolower(preg_replace('/((?<=[a-z])(?=[A-Z]))/', '_', $name)); } /****************** 修改結束 ********************/ /* if ($type) { $name = preg_replace_callback('/_([a-zA-Z])/', function ($match) { return strtoupper($match[1]); }, $name); return $ucfirst ? ucfirst($name) : lcfirst($name); } else { return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_")); }*/ } ``` **ThinkPHP 5.0.3及以下版本請按此修改:** ``` /** * 字符串命名風格轉換 * type 0 將Java風格轉換為C的風格 1 將C風格轉換為Java的風格 * @param string $name 字符串 * @param integer $type 轉換類型 * @return string */ public static function parseName($name, $type = 0) { /****************** 修改開始 ********************/ if ($type) { return preg_replace_callback(['/\_([a-zA-Z])/', '/([^.][a-zA-Z]*$)/'], function ($match) { return ucfirst($match[1]); }, $name); } else { return strtolower(preg_replace('/((?<=[a-z])(?=[A-Z]))/', '_', $name)); } /****************** 修改結束 ********************/ } ``` >[info]請使用框架使用的源碼,不要自己隨便更新或替換源碼
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看