这是一个关于如何为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来说是不必要的平台的应用程序。