Coldbox模块事件在renderLayout调用中死亡

时间:2017-04-25 15:56:26

标签: module coldfusion coldbox

tl; dr renderLayout(layout="myLayout", view="alpha/bravo/viewFile")alpha解析为主机应用程序中的模块名称而不是包名称,即使代码执行在包中而不是模块。

如何直接运行处理程序或从模块通过runEvent调用处理程序时,如何使路径解析保持一致?

我在CB google小组上发布了此消息,但后来认为最好在此处提问。

这里的工作示例:https://github.com/jinglesthula/cbModuleExample

如果您运行install(我.gitignored冷箱文件夹),然后cd进入/app文件夹和server start --rewritesEnable,您可以访问http://127.0.0.1:<whatever port>/example/admin/test/ajax以查看其运行情况。

来自示例:

/app/modules_app/example/handlers/admin/test.cfc -> ajax()来电runEvent("admin.test.ajax")

/app/handlers/admin/test.cfc -> ajax()调用`renderLayout(layout =“layout.div”,view =“admin / test / ajax”)

"admin/test/ajax"通常会解析为/app/views/admin/test/ajax.cfm,但在这种情况下,它会解析为/app/modules_app/admin/views/test/ajax.cfm

您可以注释掉第18行并取消注释/modules_app/example/admin/handlers/test.cfc中的第19行,以查看解决方法。

您还可以在浏览器中转到/admin/test/ajaxDirect,以查看非工作示例中的renderLayout()来电是否正确。

注意:我的ModuleConfig.cfc中有this.viewParentLookup = true。我已经尝试重新加载模块,并将其设置为false,我得到相同的结果。

0 个答案:

没有答案