我有一个 navigation.cfm 页面,我通过使用MG3自定义事件类型将其包含在我的所有页面中:
<event-type name="pageWithNav">
<after>
<views>
<include name="navigation" template="templates/navigation.cfm"/>
<include name="maintemplate" template="templates/main.cfm"/>
</views>
</after>
</event-type>
我在像这样的事件处理程序中使用它:
<event-handler name="page.home" type="pageWithNav">
<views>
<include name="body" template="pages/home.cfm"/>
</views>
</event-handler>
我的问题是,如何设置变量以便 navigation.cfm 页面知道当前页面是什么?到目前为止,我在page.home
事件处理程序中完成了以下操作:
<include name="body" template="pages/home.cfm">
<value name="currentPage" value="home"/>
</include>
通过设置这样的值,它可用于之后的所有视图。虽然这有效,但语义错误,因为{strong> home.cfm 模板使用currentPage
变量而不是 navigation.cfm 。这样做的正确方法是什么?
答案 0 :(得分:0)
我不确定最佳做法是什么,但您可以考虑在主视图中设置一个可以在after
视图中选择的视图状态值。
例如在view pages / home.cfm中使用<cfset viewState.setValue("currentPage","home") />
然后在视图模板/ navigation.cfm中使用<cfset viewState.getValue("currentPage","") />
再次检索它。
我没有在after
事件类型的上下文中尝试过此操作,但我确实使用它来设置模板用来设置html pagetitle
属性的title
变量。 / p>