Использование макетов, партиалов и includeContent() в CFWheels

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

  • 1 основной макет для хранения данных верхнего/нижнего колонтитула
  • 1 частичное представление для главной страницы, так как ее макет тела отличается
  • 1 частичный просмотр для всех остальных страниц

Все партиалы должны входить в основной макет, который я создам в views/layout.cfm.

Вот файлы.

Controller/Home.cfc — содержит функции для индексации и конфиденциальности.

<cfcomponent extends="Controller">

    <cffunction name="index">

        <cfset qRecipes = model("tblRecipes").findAll(
            select="id, name, image, homepage_order",
            where="homepage_order > 0",
            order="homepage_order",
            maxrows=4
        ) />
     </cffunction>

     <cffunction name="privacy">

    </cffunction>

</cfcomponent>

views/home/index.cfm — должен отображать макет главной страницы views/home/privacy.cfm — содержать статический текст, завернутый в cfsavecontent вот так.

<cfsavecontent variable="foo">
xxxxxxxx
</cfsavecontent>
<cfset contentFor("foo") />

В документации недостаточно подробных примеров, чтобы я мог понять, чего мне не хватает. Основной макет будет выглядеть так:

<cfoutput>#includePartial("/shared/header")#
#styleSheetLinkTag(source="homepage", head=true)#
</cfoutput>asdfsafd

    <body>

        <div id="page-wrap">

        <header>
            <cfoutput>#includePartial(partial="/shared/socialmedia", cache=1440)#</cfoutput>

            <nav id="top-navigation">
                <cfoutput>#includePartial("/shared/topnav")#</cfoutput>
            </nav>
        </header>

        <cfoutput>#includeContent()#</cfoutput> <!--- All partial data should output here --->
    </body>
</html>

Поскольку я помещаю весь текст для конфиденциальности в переменную, нужна ли мне еще одна страница для вывода #includeContent("foo")# до загрузки основного макета? Или можно, чтобы страница, заполненная текстом, не оборачивалась в cfsavecontent?


person justacoder    schedule 23.02.2015    source источник
comment
Похоже, вы пишете свой собственный фреймворк. Есть ли причина, по которой вы решили не использовать сообщество, поддерживающее FW/1 или Coldbox? Оба они поддерживают этот тип «вложенности» из коробки.   -  person Scott Stroz    schedule 23.02.2015
comment
@ScottStroz они пометили его cfwheels, поэтому они используют структуру сообщества.   -  person Jarede    schedule 23.02.2015
comment
Пропустил это .... мой плохой ...   -  person Scott Stroz    schedule 23.02.2015


Ответы (1)


Нет необходимости оборачивать страницу конфиденциальности в <cfsavecontent>. Попробуйте без тегов <cfsavecontent> и без тегов contentFor("foo"). Затем его содержимое должно появиться там, где у вас есть #includeContent()# в основном макете.

Что вы пытаетесь сделать с домашней страницей, которая отличается? Что-либо?

person Chris Peters    schedule 24.02.2015