

- 1 禅道二次開發簡介
- 2. 禅道擴展开发
- 2.1 禅道擴展机制简介
- 2.2. 新增獨立模塊
- 2.2.1 基本的代碼組織
- 2.2.2 新增控制層(control/zen)
- 2.2.3 新增模型層(model/tao)
- 2.2.4 新增視圖層(view/ui)
- 2.2.5 新增語言項lang和配置項config
- 2.2.6 新增前端樣式CSS和JavaScript
- 2.3. 修改已有模塊
- 2.3.1 對控制層(control/zen)擴展
- 2.3.2 對模型層(model/tao)擴展
- 2.3.3 對視圖層(ui)擴展
- 2.3.4 對樣式表CSS和JavaScript進行擴展
- 2.3.5 對多語言和配置進行擴展
- 2.4. 常用類庫
- 3. 禅道API
- 3.1 API機制簡介
- 3.2 需要登錄驗證的API調用
- 4 命令行調用
新增模型層(model/tao) 分享鏈接 /book/extension-dev/new-model-1327.html
本篇目錄
一、模型层 model
文件位置
禅道的模型層在model.php文件裏編寫,主要用來處理各種數據的查詢、更新。
還是以oa模塊爲例,新增一個extension/custom/oa/model.php文件。
代碼編寫
在model.php文件里创建一个名称为:模块名+'Model' 的类,继承自model类。model类是禅道框架的基础类,可以在framework/model.class.php查看具体实现。
比如oa模塊:
<?php class oaModel extends model { public function getList() { return $this->dao->select('*')->from(TABLE_TODO)->fetchAll(); } }
1. 通过dao访问数据库
dao的寫法跟SQL非常相似,詳細的介紹請參閱dao文檔:/book/extension-dev/dao-1332.html。
2. control层调用model方法
model層的代碼需要被control層調用才能執行,調用的方式分兩種:
相同模塊的control类方法,可以直接调用,比如 $this->oa->getList();
其他模塊的control類方法,需要先load該model。
比如在user模塊,使用方式如下:
<?php class user extends control { public function xxx() { $this->loadModel('oa'); $oaList = $this->oa->getList(); ... } }
二、模型子層tao
tao層是禅道20版本之後增加的新的邏輯分層,主要解決的是mdel層代碼臃腫,將model層的子邏輯放在tao層。注意:tao層是可選的。
文件位置
新增模块的zen层需要在 extension/custom/xxx 目錄下新增一个 tao.php 文件,比如 extension/custom/oa/tao.php。
代碼編寫
在tao.php文件里声明一个名为 模块名 + 'Tao' 的类,继承自该模块的model类,比如oa模块就继承上面model层增加的oaModel类。
因此tao跟model一樣可以調用dao訪問數據庫。
<?php class oaTao extends oaModel { public function getList() { return $this->dao->select('*')->from(TABLE_TODO)->fetchAll(); } }model层可以通过诸如 $this->oaTao->getList(); 的方式调用 tao 层的方法。
三、限制
由于框架加載機制的限制,每個新模塊只能有一個model類和tao類。
-
禅道産品
禅道開源版 禅道企業版 禅道旗艦版 禅道IPD版 -
核心功能
産品管理 項目管理 質量管理 效能管理 -
使用文檔
基本版手冊 企業版手冊 旗艦版手冊 IPD版手冊 開發中心手冊 -
幫助中心
积分問答 常見問題 論壇交流 使用視頻 Gitee GitHub -
關于我們
關于我們 禅道軟件 最新動態 禅道活動 -
禅道社區
禅道博客 積分排行 積分商城 禅道書院 -
聯系方式
聯系人:楊苗 電話:13165050229 微信:13165050229 Q Q:2692096539北京、上海、深圳分部