J'ai une vue dans mon application ColdBox qui appelle un gestionnaire de module dans la vue comme ceci:

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

Maintenant, je veux passer des arguments au module, donc j'ai changé l'appel en ceci:

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

Bien que malheureusement, je ne semble pas avoir accès aux arguments passés dans le gestionnaire d'événements du module. J'ai vidé rc et prc, mais ils ne contiennent que des variables que j'ai définies dans le gestionnaire d'événements principal et l'argument event ne semble pas fournir de méthode pour renvoyer le arguments. La documentation sur les exécutions d'événements de module ne fournit malheureusement aucune information sur ce.

De plus, j'ai réalisé que l'appel de event.getCurrentModule() dans le module renvoie une chaîne vide. J'aurais attendu le nom du module.

Alors, comment puis-je accéder aux arguments passés à un module? runEvent() est-il la bonne fonction pour cela? Ai-je manqué un paramètre de configuration de module?

2
Sebastian Zartner 16 janv. 2017 à 13:01

2 réponses

Meilleure réponse

Vous pouvez définir des arguments dans votre fonction comme ceci

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

Consultez la documentation ColdBox runEvent().

2
Sebastian Zartner 16 janv. 2017 à 13:25

La documentation ColdBox explique comment transmettre des arguments supplémentaires à votre fonction. Donc par exemple appel

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

La variable foo est accessible via la portée arguments:

function index(event, rc, prc) {
  writedump(arguments.foo); // Dumps "bar"
}
1
Sebastian Zartner 16 janv. 2017 à 13:21