如何访问传递给 ColdBox 模块的事件参数?

How to access the event arguments passed to a ColdBox module?

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

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

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

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

虽然不幸的是我似乎无法访问模块事件处理程序中传递的参数。我已经转储 rcprc,但它们只包含我在主事件处理程序中设置的变量,并且 event 参数似乎没有提供 [=32] 的方法=] 传递的参数。很遗憾,documentation about module event executions 没有提供任何相关信息。

此外,我意识到在模块 returns 中调用 event.getCurrentModule() 是一个空字符串。我会期望模块的名称。

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

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

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

参见ColdBox runEvent() documentation

ColdBox documentation 解释了如何将附加参数传递给您的函数。所以例如打电话

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

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

function index(event, rc, prc) {
  writedump(arguments.foo); // Dumps "bar"
}