教程:通用工具中的MVC模式

发布者: bitcero 在 2014/11/18 21:20:00 7907次阅读
Resized Image
可能很少人知道,但自版本2.2起,《通用工具》已经包含了MVC(模型-视图-控制器)模式的基本实现。在本文中,我将向大家介绍《通用工具》及其集成模块中MVC的工作原理。如果您还不了解MVC是什么,请阅读维基百科上的这篇文章了解MVC-controller.php 。- 文件内的控制类必须命名为 _ 控制器类
  Mymodule_Nombrecontrolador_Controller  继承自  RMController 

    use  
RMModuleAjax ,  RMProperties ,  RMModels ;

    public  function 
__construct () { 
        
parent :: __construct (); 
        
this -> default 'index' ;  // 默认操作
        
this -> controller =  'categories' 
    }

    public  function 
index () { 
        
// index操作的逻辑

        
This -> tpl -> header (); 
        
This -> tpl -> footer (); 
    } 
}
模型呢? 模型只能通过控制器访问。这意味着它们只能被控制器类的方法使用。模型还有一些特定的规则:- 必须位于模块的 /models 文件夹中。- 模型文件的命名必须为-model.php . - 文件必须包含一个名为 _ _model 的类。从特定的模型Coming from a particular model的一个典型声明可能是
class  Mymodule_Nombremodelo_Model  extends  RMActiveRecord 


    use  
RMModels ;

    public  function 
__construct () {

        
parent :: __construct (  'model' ,  'module'  );

        / **
         * 
Titles table fields
         
* / 
        $ 
this -> titles = array ( 
            
'column'  => __ (  'Column Title' ,  'module'  ), 
            
'column2'  => __ (  'Title column2' ,  'module'  ), 
            ... 
        );

    } 
}
视图是怎样的? 最终我们得到视图。这些实际上是源自动作名称的模板。对于上面的例子,其中模块使用图书馆,并请求执行列表(动作)方法,公共工具获取list.php模板,因为它是对应列表动作的模板。很简单,对吗?这意味着视图文件(模板)应指定为正在运行的动作(控制器方法)。如果我们的动作名称是表单,那么我们的模板必须是form.php。如果动作名称为 -form categories,那么我们的文件也应该是categories-form.php。还有一件事情。视图,正如在任何模块中一样,应根据以下情况存储在模块模板目录中,但不是直接,而是在适当的子文件夹中。- 模板文件夹可以包含标准模板(如模块中常用)。- 模块可以有自己的控制面板模板或公共部分的模板,因此应在/templates目录下有两个子文件夹:backend和frontend。- 在每个这些子文件夹中,应该为处理视图的每个驱动器创建一个新的子文件夹。如果驱动器名为categories,那么必须有名为categories的子文件夹,其中将存储每个动作的视图。- 这种新的模块开发方法使XOOPS的开发速度更快,结构更清晰。此外,通过其辅助对象,公共工具简化了模块中AJAX的实现,使用户体验更加直观和易于使用。