大家都知道
joomla是MVC架構的東西
但是他的預設功能
似乎又跟MVC架構有點不一樣
我想主要就是在
table 物件 與 view.html 這兩個檔案吧
table 物件:
他這邊類似於model的功能.用於SQL 的table的存取
但是其實不是很好用.因為他的用法限制很多
例如欄位命名.一些發布 OR 不發布的功能
就有他自己的限制
但是這table物件一定要用嗎?
其實也不一定
一樣自己可以用model來存取資料庫就好
沒有強制要使用table物件
view.html 檔案
這檔案主要用在呼叫model,整理變數,插入view中
但是一般人會想
[這不是controller的工作嗎?]
是阿
我也是這樣想
所以其實也可以把他忽略
但是一定還是要保留
因為他的controller是呼叫view.html 來呼叫模板的
所以這檔案不能沒有
所以我的做法是
寫一個共用繼承的類別
把呼叫view的功能簡化
類似這樣
//共用繼承 class ZoeController extends JControllerLegacy { public $viewName = NULL; public $viewData = array(); //放置給view的值 function getDisplay($path='') { $pathArray = explode('/',$path); if (!(isset($pathArray[0]) && $pathArray[0] != '' && isset($pathArray[1]) && $pathArray[1] != '')) { JError::raiseError(500,"版型錯誤"); } $view = $this->getView($pathArray[0],'html'); $view->setLayout($pathArray[1]); return $view; } }
順便再給view一個放置資料的變數
所以在controller裡面類似這樣
class LoanCustomerControllerLoanBank extends ZoeController { function index() { //20140425 zoearth Joomla 必須先設定模板 //20140424 zoearth 設定模板 $view = $this->getDisplay(CONTROLLER.'/list'); $LoanBank_DB = $this->getModel('LoanBank');//取得Model $option = array(); //放入view所需資料 $this->viewData['rows'] = $LoanBank_DB->getAll($this->viewData); $this->viewData['rowsCount'] = $LoanBank_DB->getAllCount(); //註冊view所需資料 $view->assignRef('data', $this->viewData); //JOOMLA的換頁功能 $pagination = new JPagination($this->viewData['rowsCount'],$this->viewData['limitstart'],$this->viewData['limit']); $view->assignRef('pagesLinks', $pagination->getPagesLinks()); $view->display(); } }
其實我這邊的參考寫法也是參照Zend 1 的做法去做的
因為我喜歡把功能開發簡化
但是又非常的活
所以即使是JOOMLA的元件開發
也是可以參照CI 或ZEND 1 的寫法去寫的
而且就我而言
用JOOMLA作為平台開發
有很多好處
希望對大家有幫助!
如果有人有JOOMLA 元件開發問題也可以留言問我喔
感恩
留言板
歡迎留下建議與分享!希望一起交流!感恩!