controller.php 控制器—【Suite CRM开发者文档】

SuiteCRM 全功能,不限用户

SuiteCRM 与 Salesforce 和 Dynamics 一样强大,具有更高的技术独立性和定制性。业务咨询与服务,请联系:188-9654-1629

我们提供的服务包括:插件开发、主题开发、安装和配置、CRM升级、CRM部署、支持与维护、用户培训…

SuiteCRM遵循MVC(模型-视图-控制器)模式,因此具有控制器(controllers)的概念。控制器负责对模型进行更改,并将控制适当地传递给视图。SuiteCRM具有动作的概念,即控制器将采取的动作。让我们看一下SuiteCRM URL:

example.com/index.php?module=Accounts&action=index

在这个(相当无聊)的示例中,我们看到模块是Accounts。这将确定要使用的控制器,然后在该控制器上调用index操作。

SuiteCRM将首先在以下位置查找控制器 custom/module/<TheModule>/controller.php。如果找不到,则下一步module/<TheModule>/controller.php将被检查。最后,如果这些控制器都不存在,则将使用默认控制器。可以在以下位置找到默认控制器 include/MVC/Controller/SugarController.php

定制控制器 

通常,默认控制器处理请求并委托给适当的视图等。但是,自定义控制器可用于添加或更改功能。让我们看一下添加一个新动作。

首先,我们必须添加我们的自定义控制器。这将根据模块的性质而略有不同。

定制模块 

在这种情况下,我们可以将文件直接放入模块中。您应该在以下位置创建一个新文件(如果不存在) modules/<TheModule>/controller.php。内容将类似于: 为定制模块创建定制控制器

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class <TheModule>Controller extends SugarController
{

}
为定制模块创建定制控制器
为定制模块创建定制控制器

预先存在的模块 

对于预先存在的模块,应将控制器添加到
custom/modules/<TheModule>/controller.php

该文件的内容会有所不同,具体取决于您是扩展现有控制器(如果存在)还是完全创建自己的版本。通常最好扩展现有的控制器,因为这将保留重要的逻辑。您应在此处注意命名约定。我们给班级命名
Custom<TheModule>Controller

在这里,我们不扩展现有的控制器,或者不存在这样的控制器: 为现有模块创建自定义控制器

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class Custom<TheModule>Controller extends SugarController
{

}
为现有模块创建自定义控制器
为现有模块创建自定义控制器

或者,我们扩展现有的控制器。请注意,我们需要现有的控制器: 使用现有控制器为现有模块创建自定义控制器

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

require_once 'modules/<TheModule>/controller.php';

class Custom<TheModule>Controller extends <TheModule>Controller
{

}
使用现有控制器为现有模块创建自定义控制器
使用现有控制器为现有模块创建自定义控制器

添加动作 

现在,我们可以向控制器添加新操作。在名称上将操作作为控制器上的方法创建action_<actionName>。例如,要创建一个名为“ echo”的新动作,我们可以在上面创建的一个控制器中创建以下方法。然后,这可以执行所需的任何逻辑。在我们的示例中,我们将记录REQUEST并简单地重定向: 添加自定义控制器动作方法

public function action_echo(){
  $GLOBALS['log']->debug("Echo called with request: ".print_r($_REQUEST,1));
  SugarApplication::redirect('index.php');
}
添加自定义控制器动作方法
添加自定义控制器动作方法

之前版本 

在先前版本的SugarCRM中,通过在任一版本中创建文件来添加新操作 modules/<TheModule>/<actionname>.php 要么 custom/modules/<TheModule>/<actionname>.php。尽管这仍然有效,但不建议这样做。

滚动至顶部