一个系统中控制器是相当重要的,它是实现程序逻辑的关键。
SuiteCRM遵循MVC模式,因此也具有控制器的概念。我们先不管这个系统中的控制器代码该如何编写,最先要做的,是要知道控制器在哪!!!
SuiteCRM系统在使用控制器的时候,首先会查找 custom/module/<模块名>/controller.php这个文件。如果未找到此文件,则会继续查找module/<模块名>/controller.php这个文件。要是这两个文件都没有找到,则将使用默认控制器include/MVC/Controller/SugarController.php。
这样我们就知道该从何处下手了,除去默认控制器,还是会有两个控制器文件,首先,我们要了解这两个控制器的区别。
一、custom/module/<模块名>/controller.php
这个地方的控制器,官网说是作用在 预先存在的模块,文件咱们已经知道怎样去建了,那我们的文件内容如何写,类名该如何定义了,下面直接上代码。
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class Custom<模块名>Controller extends SugarController
{
public function action_index()
{
}
}
这里值得注意的是,类名的定义与我们平时用的框架的类名定义是不一样,比如laravel,类名与文件名得是一样的,但这里不是。还有要注意的是方法名的定义,要加上action_作为前缀,有点类似于yii2。
二、module/<模块名>/controller.php
这里的就是 定制模块的控制器,就是在后台导入系统中的模块,就可以把对应的控制器写在这里。
这里的控制器内容,和custom下的控制器是有一点点不同的。
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class <模块名>Controller extends SugarController
{
public function action_index()
{
}
}
这里的类名比上一个少了个Custom,方法名的定义是一样的,并且两种控制器都要继承SugarController这个基类。
访问控制器方法的url:<你的域名>/index.php?module=<模块名>&action=<方法名>
到这里,控制器的定义就完成了,下面就可以为所欲为了。