tl;dr:在主机应用程序中renderLayout(layout="myLayout", view="alpha/bravo/viewFile")解析alpha为模块名称而不是包名称,即使代码执行是在包而不是模块中。
直接运行处理程序或通过模块调用处理程序时,如何使路径分辨率保持一致runEvent?
我在 CB google 组上发布了这个,但后来认为最好在这里问。
这里的工作示例:https ://github.com/jinglesthula/cbModuleExample
如果您运行安装(我 .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 行并取消注释第 19 行/modules_app/example/admin/handlers/test.cfc以查看解决方法。
您也可以/admin/test/ajaxDirect在浏览器中查看renderLayout()非工作示例中的调用是否正确。
注意:我this.viewParentLookup = true的 ModuleConfig.cfc 中有。我尝试重新加载模块并将其设置为 false,我得到了相同的结果。