2

我的 ColdBox 应用程序中有一个视图,它在视图中调用模块处理程序,如下所示:

#runEvent( event="mymodule:home.index" )#

现在我想将参数传递给模块,所以我将调用更改为:

#runEvent( event="mymodule:home.index", eventArguments=moduleArgs )#

虽然不幸的是,我似乎无法访问模块事件处理程序中传递的参数。我已经转储了rcand prc,但它们只包含我在主事件处理程序中设置的变量,并且该event参数似乎没有提供返回传递参数的方法。不幸的是,有关模块事件执行的文档没有提供任何有关此的信息。

另外,我意识到在模块内调用event.getCurrentModule()会返回一个空字符串。我本来期望模块的名称。

那么,如何访问传递给模块的参数?这runEvent()是正确的功能吗?我错过了模块配置设置吗?

4

2 回答 2

2

您可以像这样在函数中定义参数

function index(event, rc, prc, isRender=false) {
  writedump(arguments);
  abort;
} 

请参阅ColdBoxrunEvent()文档

于 2017-01-16T10:39:01.667 回答
1

ColdBox文档解释了如何将其他参数传递给您的函数。所以例如打电话

#runEvent( event="mymodule:home.index", eventArguments={foo="bar"} )#

foo变量可以通过arguments范围访问:

function index(event, rc, prc) {
  writedump(arguments.foo); // Dumps "bar"
}
于 2017-01-16T13:21:50.057 回答