1

MG3 カスタム イベント タイプを使用して、すべてのページに含めているnavigation.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これは機能しますが、変数がnavigation.cfmではなくhome.cfmテンプレートで使用されているように見えるため、セマンティクスが間違っています。これを行う正しい方法は何ですか?

4

1 に答える 1

0

ベストプラクティスが何であるかはわかりませんが、ビューを取得できるプライマリビュー内からビューステートに値を設定することを検討できafterます。

たとえば、view pages/home.cfm での使用<cfset viewState.setValue("currentPage","home") />

次に、ビューの templates/navigation.cfm で使用します<cfset viewState.getValue("currentPage","") />

もう一度取得します。

afterイベントタイプのコンテキストでこれを試したことはありませんが、これを使用pagetitleして、テンプレートが htmltitle属性を設定するために使用する変数を設定します。

于 2011-12-08T00:44:28.010 に答える