CakePHP — Создание 2 переменных $content_for_layout

Я работаю над полным редизайном своей компании и столкнулся с проблемой. Мы строим if на основе Cake Framework (1.2.0.7296 RC2), и я пытаюсь найти лучшее решение для создания надежного шаблона макета. Созданный мной дизайн имеет несколько оберток на каждой странице. Ниже представлена ​​упрощенная версия кода.

<body style="background:url(somebackground.png);">
    <div class="page">
    <!--Page is used to constrain the content within a specific width-->
        <div class="header">
        <div class="nav">

      </div><!--End Nav-->
    </div><!--End Header-->
    <div class="content">
      <!--This area contains a slideshow and other info that varies from page-to-page-->
    </div><!--End Content-->
 </div><!--End Page-->
 <div class="wrapper" style="background:url(someotherbackground.png);">
    <div class="page">
    <div class="content">
        <!--Additional content-->
    </div><!--End Content-->
  </div><!--End Page-->
 </div><!--End Wrapper-->
 </body>

Проблема в том, что в макете Cake есть только один $content_for_layout, который подходит для большинства веб-сайтов. Однако из-за того, как я структурировал вещи, мне трудно в полной мере воспользоваться преимуществами шаблона макета. Единственное решение, о котором я подумал, было следующим.

  • Закройте верхний div class='page после заголовка, а затем добавьте еще один div class='page' под ним. Таким образом, я мог бы поместить заголовок и навигацию в элементы и сохранить их только в шаблоне макета. Проблема в том, что я не использую все преимущества шаблона, потому что я все еще буду повторять много html.

В идеале я хотел бы иметь 2 $content_for_layout. Один для содержимого под первой страницей, а другой для содержимого на второй. Таким образом, я могу использовать шаблон макета в полной мере. Тогда на моей странице у меня будет раздел, где я могу разместить перспективный контент. В моем исследовании этой проблемы я нашел несколько решений.

Я не уверен, что это лучшие решения или они дадут мне то, что я ищу. Я дизайнер и фронтенд-разработчик, поэтому мои знания Php ограничены. Мои знания о Cake еще более ограничены. Я ищу самое простое решение.


person DH-Designs    schedule 03.08.2012    source источник


Ответы (1)


Если это возможно (но я предполагаю, что нет), используйте последнюю версию Cake (стабильная версия 2.2.1). Начиная с версии 2.1, Cake поддерживает блоки просмотра., которые решают именно ту проблему, с которой вы столкнулись.

Если это невозможно, вы можете установить некоторую переменную (возможно, визуализированный элемент или, что еще лучше, переменные, которые вам нужно будет перенаправить в элемент, визуализированный из макета) из вашего контроллера, и повторить это везде, где вы хотите на макете . Все переменные, которые вы передаете из контроллера в представление с помощью Controller::set, также будут доступны для макета.

person bfavaretto    schedule 03.08.2012