<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 在線體驗 [http://tpadmin.yuan1994.com](http://tpadmin.yuan1994.com) 默認管理員帳號:admin,默認管理員密碼:123456 ## 倉庫地址 [https://github.com/yuan1994/tpadmin](https://github.com/yuan1994/tpadmin) ## 使用方法 ### composer安裝: composer create-project yuan1994/tpadmin tpadmin --prefer-dist ### git克隆: git clone https://github.com/yuan1994/tpadmin ### 直接下載: https://github.com/yuan1994/tpadmin/archive/master.zip >[info]框架的依賴需要通過 composer 下載,請在框架根目錄執行 composer update ,已確保依賴的類庫能下載下來 ##部署 參考 [ThinkPHP5 - 部署](http://www.hmoore.net/manual/thinkphp5/129745) 部署成功后,建立新建數據庫 tpadmin,導入項目根目錄的 tpadmin.sql 文件,默認管理員帳號:admin,默認管理員密碼:123456 如果是配置了虛擬域名并且虛擬域名指向了項目根目錄的 `public` 文件夾,那么訪問 `http://your-tpadmin-root-domain/admin` 即可,如果沒有配置虛擬域名,那么訪問 `http://localhost/tpadmin/public/admin` ,如果配置了虛擬域名但是虛擬域名指向的是項目根目錄,那么訪問 `http://your-tpadmin-root-domain/public/admin` 請對號入座,如果是 `Apache` 推薦第二種 >[info] 如果部署中出現任何問題,請網上搜索自己解決,已在 PHP 5.5 以上版本,Windows/MacOS/Linux 的 Apache/Nginx 服務器上都測試沒問題,請節約大家的時間 >[info] 已開啟偽靜態模式,會隱藏 index.php 入口文件 ## 開發規范 請參考ThinkPHP5官方開發規范 [ThinkPHP5 - 開發規范](http://www.hmoore.net/manual/thinkphp5/118007) ## 升級警告 **ThinkPHP5.0 正式版有一些不適合管理后臺需求,做了如下修改,請務必修改下面所示,以后升級必須檢查此兩處是否有做修復,自己升級 ThinkPHP 版本后一定要修改下面兩處** >[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)); } /****************** 修改結束 ********************/ } ``` ## 注意 >[warning] 為了確保代碼自動生成可用,請在 Linux/MacOS 系統上使用項目時保證 application 文件夾有可寫權限,本地開發可用將文件夾的權限改為 777,線上部署請注意修改成安全的權限
                  <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>

                              哎呀哎呀视频在线观看