這是一個關于如何為Joomla開發一個模型-視圖-控制器組件的系列教程。Joomla 3. x。
注意:
如果你是第一次接觸到Joomla!請閱讀有關組件功能的絕對基礎知識。
需求:
你需要Joomla !3.0(使用PHP、MySQL和Apache/Microsoft IIS)或更大的本教程。我收集了很多信息,然后我開始遷移新Joomla的組件!2.5到3.0。下面是一些用于遷移的重要信息。請參閱有關遷移升級版本的所有信息。使用“display_errors”來幫助調試錯誤。
遷移Joomla 2.5 Joomla 3.0:
請記住,您需要在直接擴展JModel、JView或JController的任何地方添加Legacy。如果它是間接的(比如通過JModelList),您就不必,它已經被處理了。除此之外,正如很久以前所宣布的,不支持的代碼已經被刪除(我認為JParameter是最大的影響),擴展只需要稍微改變一下……盡管您將希望看到Kyle正在進行的輸出更改。當然,如果您正在構建獨立的平臺應用,新的MVC和JApplicationWeb / JApplicationCLI是完全支持的工作方式和優點,而我們做這個是新安裝包已經在服務器上到了CMS。
示例:由于我們在3.0中刪除了DS常數,所以我們需要替換com_media中常量的用法。最不引人注目的變化是用PHP的DIRECTORY_SEPARATOR常量替換它,因為DS是它的別名。然而,推薦的方法是簡單地使用斜杠,即,'components/com_example/models/example.php' 而不是 'components'.DS.'com_example'.DS.'models'.DS.'example.php'.這是為了windows安全。
if(!defined('DS')){ define('DS',DIRECTORY_SEPARATOR); } //$controller = JController::getInstance('HelloWorld'); $controller = JControllerLegacy::getInstance('HelloWorld'); //class HelloWorldViewHelloWorlds extends JView class HelloWorldViewHelloWorlds extends JViewLegacy class HelloWorldController extends JControllerLegacy class HelloWorldModelHelloWorld extends JModelItemLegacy class HelloWorldModelUpdHelloWorld extends JModelFormLegacy JRegistry::getValue() now is JRegistry::get() //Convert sample to JRegistry with LoadJSON - Sample from Joomla! 3.0 sourcecode // $params = new JRegistry; // $params->loadJSON($this->item->params); // $this->item->params = $params; $params = new JRegistry; $params->loadString($item->params); $item->params = $params;
新MVC Joomla !3.0
該平臺的第12.1版本為模型-視圖-控制器范例引入了一種新的格式。原則上,類JModel、JView和JController現在是接口,基礎抽象類分別是JModelBase、JViewBase和JControllerBase。此外,所有的類都被簡化了,刪除了許多與Joomla的耦合!這對于獨立的Joomla CMS來說是不必要的平臺的應用程序。





