2011-12-08 29 views
1

我有一个navigation.cfm网页,我包括我的所有网页的使用MG3自定义事件类型:如何在ColdFusion Model Glue 3中设置全局导航cfm的当前页面?

<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。这样做的正确方法是什么?

回答

0

我不确定最佳做法是什么,但您可以考虑在视图状态下从主视图中设置一个值,该主视图可以拾取after视图。

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

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

再次找回它。

我没有after事件类型的情况下试过,但我使用这个设置pagetitle变量,模板用来设置HTML title属性。

相关问题