Верстка содержит представляемый код, который обволакивает отображение. Все, что вы хотите увидеть в ваших отображениях, должно быть размещено в верстке.
Файлы верстки должны быть расположены в /app/views/layouts. Верстка CakePHP по умолчанию может быть заменена на созданную в /app/views/layouts/default.ctp. Когда новая верстка по умолчанию создана, то код отображения, сгенерированный контроллером, помещается внутрь верстки, когда страница рендерится.
Когда вы создаете верстку, необходимо сообщить CakePHP где разместить код для ваших отображений. Чтобы сделать это, убедитесь, что ваша верстка влючает место для $content_for_layout (и опционально $title_for_layout). Вот пример того, как может выглядеть верстка по умолчанию:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $title_for_layout?></title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<!-- Подключаем внешние файлы и скрипты здесь (Смотрите HTML-хелпер для доп. информации) -->
<?php echo $scripts_for_layout ?>
</head><body>
<!-- Если вы желаете, чтобы какое-либо меню
показывалось во всех ваших отображениях, включите его сюда -->
<div id="header">
<div id="menu">...</div>
</div>
<!-- Я хочу, чтобы мои отображения выводились здесь-->
<?php echo $content_for_layout ?>
<!-- Добавить нижний колонтитул для каждой отображаемой страницы -->
<div id="footer">...</div>
</body>
</html>
$scripts_for_layout содержит любые внешние файлы и скрипты, подключенные с помощью встроенного HTML хелпера. Полезно для подключения javascript и CSS файлов из отображений.
Когда используете $html->css() или $javascript->link() в файлах отображений, определяйте 'false' для 'in-line' аргумента, для размещения источника html в $scripts_for_layout.
(Дополнительную информацию по использованию смотрите в API).
$content_for_layout содержит отображение. Это то место, где код отображения будет расположен.
$title_for_layout содержит заголовок страницы.
Самый простой способ установить заголовок для вашего отображения – это использование переменной $pageTitle из контроллера.
<?phpclass UsersController extends AppController { function
viewActive() {
$this->pageTitle = 'View Active Users'; }
}
?>
Вы можете создать столько видов верстки сколько пожелаете: просто поместите их в директорию app/views/layouts, и переключайтесь между ними в действиях вашего контроллера, используя переменную контроллера $layout, или функцию setLayout().
Например, если раздел моего сайта включает место для малейшего рекламного баннера, я могу создать новую верстку с маленьким местом для рекламы и объявить эту верстку для всех действий контроллера, использовав что-то вроде:
var $layout = 'default_small_ad';
<?phpclass UsersController extends AppController { function
viewActive() {
$this->pageTitle = 'View Active Users';
$this->layout = 'default_small_ad'; }
function
viewImage() {
$this->layout = 'image';
//output user image
}}
?>
В CakePHP есть два встроенных типа верстки (между прочим, верстки по умолчанию), которые вы можете использовать в вашем приложении: 'ajax' и 'flash'. Верстка Ajax удобна для работы с Ajax-ответами. Это пустая верстка (большинство ajax вызовов требуют небольшое количество разметки для возврата, в отличие от полностью отрисованных интерфейсов). Верстка flash используется для сообщений, отображаемых методом контроллеров flash().
Три других типа верстки – xml, js, и rss созданы для быстрой и легкой работы с содержимым, не являющимся text/html.