由於公司需求所以大概花了一個星期搞了一個一個基於onethink的數據管理平台demo不得不說onethink這個基於thinkphp3.2.3的框架還是很棒的 讓我這個沒基礎過php的人也能在一星期能搞出東西來整理一下所遇到的坑 希望能給看到這篇文章的你有所幫助
首先安裝onethink
1.連接數據庫
由於onethink是基於mysql的如果你需要用mongo的話需要做數據表遷移由於后台權限邏輯本來就不適合mongo來搞 所以這里建議用mysql如果需求需要mongo數據庫那么最好用mysql和mongo數據庫結合的方式那么坑就來了
由於thinkphp的原因它本身對mongo的擴展沒那么好 親測 如果mongo為主mysql為輔 使用官方介紹的方法切換數據庫完全沒問題 反過來那就蛋疼了thinkphp官方接鍋需要改底層代碼 我這里說具體的解決方案盡量不改源代碼 首先參考手冊介紹的在common 文件夾下的config里的mysql的鏈接配置后將mongo數據庫的信息寫入如下圖:(注意這里mongo的表前綴寫與不寫無所謂由於thinkphp問題(bug)導致它只會用全局的即上面mysql的前綴 解決方法見這里)

接下來在Model在新建例如BooksModel.class.php內容如下(thinkphp底層會將表名強行轉成小寫所以這里使用$trueTableName繞過轉化否則會找不到表 也可以采用這里的方法改底層文件):

然后你就可以愉快的在BooksController操作使用D("Books")進行數據庫的操作這里的 M方法不能用會報找不到表錯誤的信息仔細一看還是表前綴出的問題(官方背鍋M方法里面的也是用的全局前綴你可以通過修改解決)
2.onethink的分頁
你可以參考onthink 的ConfigController里的內容 它實現分頁是通過紅線標出的這一句繼承自AdminController 里的lists你可以查看它使用方法這里有更為詳細的介紹可以自己去實例化lists

3.onethink給的增刪改例子都是在mysql下的這里提供在mongo下的增刪改供參考
增:
(1)如果你也是將edit和add用一個頁面采用在表單里隱藏_id的方法 注意這里有坑先看一下下面的edit的實現由於create方法創建時會把表單里的隱藏的空的_id(如果你name里不用_id那就會在新增時新創建這個為空的垃圾字段)拉過來導致數據新增失敗這里采用在Model里寫:

或者使用field方法詳細介紹見這里
后台新增方法:
注意這里如果你想獲得插入的id可以通過下面的方法 我是用$id = $book->add()返回是空

刪:
onethink給的menu和config都有點問題這里給出我的
界面顯示效果:

批量刪除按鈕:

需要批量刪除的對象name命名和進行單一刪除對象命名一個是id[]另一個是id

后台刪除方法:

改:
前台:這里貌似一定要使用_id

后台方法:

4.樣式修改
onethink 里a 標簽實現鼠標放上去顯示下划線使用的是border-bottom的方式 使用border:none 進行覆蓋 text-decoration:none 是無效的 這個坑 坑了我好久wtf
