Как настроить текущую страницу для глобальной навигационной системы в ColdFusion Model Glue 3? - PullRequest
1 голос
/ 08 декабря 2011

У меня есть страница 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 .Как правильно это сделать?

1 Ответ

0 голосов
/ 08 декабря 2011

Я не уверен, что лучший метод, но вы могли бы рассмотреть возможность установки значения в состоянии просмотра из основного представления, которое можно выбрать для after представлений.

, например, на страницах просмотра/home.cfm используйте <cfset viewState.setValue("currentPage","home") />

, а затем в view templates / navigation.cfm используйте <cfset viewState.getValue("currentPage","") />

, чтобы получить его снова.

Я не пробовалв контексте after типов событий, но я использую это для установки переменной pagetitle, которую шаблон использует для установки атрибута html title.

...