Событие модуля Coldbox умирает при вызове renderLayout
тл; др: renderLayout(layout="myLayout", view="alpha/bravo/viewFile")
сборник законов alpha
в качестве имени модуля, а не имени пакета в главном приложении, даже если выполнение кода находится в пакете, а не в модуле.
Как мне получить разрешение пути, чтобы быть последовательным при запуске обработчика напрямую или при вызове его через runEvent
из модуля?
Я разместил это в гугл-группе CB, но потом подумал, что лучше спросить здесь.
Рабочий пример здесь: https://github.com/jinglesthula/cbModuleExample
Если вы запустите установку (я.gitignored папку Coldbox), то 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, и я получил тот же результат.