2017-01-16 8 views
1

У меня есть мнение в моем ColdBox приложении, который вызывает обработчик модуля в поле зрения, как это:Как получить доступ к аргументам событий, переданным модулю ColdBox?

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

Теперь я хочу, чтобы передать аргументы модуля, поэтому я изменил вызов к этому:

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

Хотя, к сожалению, я, кажется, не имею доступ к переданным аргументам внутри обработчика событий модуля. Я сбросил rc и prc, но они содержат только переменные, которые я установил в основном обработчике событий, а аргумент event, похоже, не предоставляет метод для возврата переданных аргументов. К сожалению, documentation about module event executions не предоставляет информацию об этом.

Кроме того, я понял, что вызов event.getCurrentModule() внутри модуля возвращает пустую строку. Я бы ожидал имя модуля.

Итак, как я могу получить доступ к аргументам, переданным модулю? Является ли runEvent() правильной функцией для этого? Я пропустил настройку конфигурации модуля?

ответ

2

Вы можете определить аргументы в функции как этот

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

ColdBox runEvent() documentation См.

+0

Спасибо за быстрый ответ! Я полностью пропустил этот момент в документации. –

1

ColdBox documentation объясняет, как передать дополнительные аргументы в вашу функцию. Так, например, вызывая

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

переменная foo можно получить доступ через arguments рамки:

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