如何在ColdFusion Model Glue 3中设置全局导航cfm的当前页面?



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

我的问题是,我如何设置一个变量,使导航。cfm page知道当前页面是什么?到目前为止,我已经在page.home事件处理程序中完成了以下操作:

<include name="body" template="pages/home.cfm">
    <value name="currentPage" value="home"/>
</include>

通过这样设置该值,它可以被后面的所有视图使用。虽然这是有效的,但是语义是错误的,因为看起来currentPage变量是由home使用的。用代替navigation.cfm模板。正确的做法是什么?

我不确定最佳实践是什么,但您可以考虑在主视图中设置viewstate中的值,该值可以拾取after视图。

例如在查看页面/主页。cfm使用<cfset viewState.setValue("currentPage","home") />

,然后在视图模板/导航。cfm使用<cfset viewState.getValue("currentPage","") />

再次检索。

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

相关内容

  • 没有找到相关文章

最新更新