Pages

2014年2月23日 星期日


Codeigniter 2.1 HMVC 實作

轉自http://eugg.blogspot.tw/2012/11/codeigniter-21-hmvc.html

何謂HMVC?

可以直接看wiki的解釋:http://zh.wikipedia.org/wiki/HMVC
簡單解釋就是模組化。

以下實作版本是wiredesignz的5.4版
可以到官方的http://bitbucket.org下載最新的版本

而Codeigniter的版本是 2.1.0

實作
Step 1 - 解壓、複製檔案:
下載好HMVC的檔案後,直接解壓縮,裡面會有二個檔案夾:
  • core
  • third_party

把這二個檔案夾裡的檔案分別複製到Codeigniter資料夾的:
  • Application/core
  • Application/third_party
 裡,第一步就完成了。

Step 2 - 修改config檔:
在Codeigniter裡的config/config.php的檔案裡,加入以下程式碼:

 $config['modules_locations'] = array(
    APPPATH.'modules/' => '../modules/',
);

Step 3 - 新增modules資料夾 
在Application裡新增一個名為 modules 的資料夾,並且在裡面直接新增模組的資料夾,假設我要新增的模組叫news
那麼在Application/modules裡的應該會有以下資料夾:
 -news
   -controllers
   -views
   -models
這裡面的MVC的用法,就和原本的CI的Application一樣了
要注意的有二點:

第一:要把在modules裡的controller的extend從CI_Controller改成MX_Controller
第二(重要):要呼叫模組的controllerd的extend從CI_Controller改成MX_Controller
否則會出現以下錯誤:
 PHP Fatal error:  Cannot redeclare class CI in ...application/third_party/MX/Base.php on line 57
舉例來說,如果我有在home的這個controller裡用到news模組,那麼我就要把home這個controller的 extend改成
 class Home extends MX_Controller {
...
}

Step 4 - 測試:
當你在modules中建好mvc架構後,可以直接打網址
http://yoursite.com/index.php/{Module名稱}/{Controller名稱}/{Method名稱}
來測試你的HMVC架構是否有完成設定

若要在你的view中,直接呼叫模組,可以在你的view中直接插入以下語法
 <? echo Modules::run( 'course_display/course_list/index' ); ?>

或是如果你要帶參數進模組,則可以使用
 <? echo Modules::run( 'course_display/course_list/index','參數1','參數2' ); ?> 
That's it !



沒有留言:

張貼留言