大家都知道
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 元件開發問題也可以留言問我喔
感恩![]()

留言板
歡迎留下建議與分享!希望一起交流!感恩!