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,我得到相同的结果。