1

我有一个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>

通过像这样设置值,它可以用于它之后的所有视图。虽然这可行,但语义是错误的,因为看起来currentPage变量是由home.cfm模板而不是navigation.cfm使用的。这样做的正确方法是什么?

4

1 回答 1

0

我不确定最佳做法是什么,但您可以考虑从可以获取视图的主视图中设置视图状态中的值after

例如在视图 pages/home.cfm 中使用<cfset viewState.setValue("currentPage","home") />

然后在视图 templates/navigation.cfm 中使用<cfset viewState.getValue("currentPage","") />

再次检索它。

我没有在after事件类型的上下文中尝试过这个,但我确实使用它来设置pagetitle模板用来设置 htmltitle属性的变量。

于 2011-12-08T00:44:28.010 回答