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