ThinkPHP开发指南-控制器之操作链和跨模块调用

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

操作链

ThinkPHP支持使用操作链的方式,例如,我们访问下面的URL:http://serverName/appName/User/action1:action2:action3/

那么会依次执行UserAction的action1 action2 action3方法,并且当前操作名称是最后一个操作。在进行默认模板输出的时候会用到。如果确实需要在不同的操作方法中都进行输出,请确保在Action的display方法中指定需要渲染的模板文件名。否则,只能输出最后的操作模板。使用了操作链后,前置和后置方法会失效。

跨模块调用

在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。

$User = A("User"); // 实例化UserAction控制器对象

$User->importUser(); // 调用User模块的importUser操作方法

这里的A("User") 是一个快捷方法,和下面的代码等效:

import("@.Action.UserAction");

$User = new UserAction();

事实上,在这个例子里面还有比A方法更简单的调用方法,例如:R("User","importUser"); // 远程调用UserAction控制器的importUser操作方法

上面只是在当前项目中调用,如果你有需要在多个项目之间调用方法,一样可以完成:


$User = A("User","App2"); // 实例化App2项目的UserAction控制器对象

$User->importUser(); 

 // 远程调用App2项目的UserAction控制器的importUser操作方法

 R("User","importUser","App2");