## 在線體驗
[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,線上部署請注意修改成安全的權限
- 概要
- 開始使用
- 寫在前面
- 目錄結構
- 模板主題支持
- 前置方法before支持
- 數據返回
- 異常接管
- Rbac 權限管理
- 開始使用
- 用戶管理
- 分組管理
- 節點管理
- 角色管理
- 使用流程
- 其他
- 代碼自動生成 v1.2
- 示例一 - 一級控制器
- 示例二 - 多級控制器
- 示例三 - 從數據表生成
- 示例四 - 指定生成的文件
- 示例五 - 命令行模式
- 示例六 - 模擬命令行模式
- 代碼自動生成
- 示例一 - 一級控制器
- 示例二 - 多級控制器
- 控制器
- 公共控制器
- traits 多繼承 Controller
- 公開不授權控制器
- 其他控制器
- 標簽擴展
- 模板
- 網站操作日志
- 節點圖
- 行為驅動
- 其他后端方法
- Excel一鍵導出
- Excel一鍵導入
- 文件下載
- 郵件發送
- 七牛文件上傳
- id加密
- 前端
- ajax請求
- 表單校驗
- 豐富彈層
- 異步操作
- 表格溢出
- 隨機字符串
- 自動面包屑導航
- 動態加載文件
- 文件上傳
- Tab 切換
- 圖片預覽
- 二維碼生成
- 日歷組件
- 升級指導
- 更新日志
- FAQ