Очень важной частью в шаблоне программирования MVC являются виды (обозначены в названии буквой V). Виды отвечают за генерацию вывода ответа на запрос. Очень часто они формируются как HTML, XML, или JSON, но потоковые файлы и создание PDF документов также являются сферой действия видов.
Виды CakePHP являются обычными PHP файлами с расширением .ctp (CakePHP template — шаблон CakePHP). Они составляют презентационый слой приложения, который обрабатывает данные, полученные от моделей и контроллеров, для представления их посетителю (пользователю).
Виды могут иметь несколько различных частей. Таким частями являются шаблоны, элементы и вспомогательные классы.
шаблоныФайлы видов, которые содержат презентационный код интерфейса вашего приложения.элементыМаленькие кусочки кода вида для повторного использования, которые реализуют различные части интерфейса.вспомогательные классы (helper)Данные классы содержат фукнционал, который требуется в различных частях слоя видов. Среди прочего, вспомогательные классы CakePHP помогают строить формы, реализовывать AJAX и постраничный вывод данных, а также обслуживают фиды RSS.
Базовый шаблон выглядит следующим образом:
<!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»>
<!— Включайте внешние файлы и скрипты здесь. —>
<?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>
В шаблоне имеется несколько переменных, которые помогают вывести части вида. Самая важная из них — $content_for_layout . Она указывает действительное место, в котором выводится вид.
Шаблоны хранятся в папке /app/views/layouts.
CakePHP имеет два основных шаблона (кроме шаблона по умолчанию) , которые вы можете использовать в своих приложениях: ajax и flash. Шаблон ajax помогает работать с ответами AJAX – это пустой шаблон (большинство вызовов AJAX почти не используют разметку в ответах). Шаблон flash используется для сообщений, которые выводит контроллер с помощью метода flash().
Три других шаблона xml, js, и rss присутствуют в ядре CakePHP для быстрого и простого формирования содержания, которое не является кодом HTML. Мы остановимся на них в следующих уроках.
Вторая важная часть видов CakePHP — это элементы. Они хранятся в папке /app/view/elements. В презентационном слое приложения многократно используются небольшие повторяющиеся части кода, такие как, навигация, изображения, формы ввода, рекламные блоки и так далее. Элементы в действительности являются мини видами, которые можно включать в шаблоны, виды и даже в другие элементы.
Вспомогательные классы содержат логику презентационного слоя приложения, которая разделяется между видами, элементами или шаблонами.
CakePHP имеет отличную поддержку тем. Для использования темы нужно просто добавить ее имя в файл /app/app_controller.php:
А для вывода ее на экран нужно добавить следующий код перед вызовом метода отрисовки в контроллере:
$this->theme = «mythemename»;
Файлы темы должны распологаться в папке /app/views/themed/. В данной папке нужно создать подпаку с таким же именем, как и у темы. Структура подпапки темы (например, /app/views/themed/example) будет такой же, как и у папки /app/views/.
Например, файл вида для действия edit контроллера Posts будет /app/views/themed/example/posts/edit.ctp. А файлы шаблона будут расоплагаться в папке /app/views/themed/example/layouts/.
Если файл вида отсутствует в папке темы, то CakePHP попытается искать вид в папке /app/views/. Таким образом, можно создать файл основного вида и просто его модифицировать по необходимости в папке темы.
Если у вас есть файлы CSS или JavaScript, особенные для вашей темы, вы можете сохранить их в папке темы в подпапках, с соответствующими именами. Например, стили сохраняем в папке /app/webroot/themed/example/css/, а код JavaScript — в /app/webroot/themed/example/js/.
Все встроенные вспомогательные классы CakePHP отлично работают с темами и будут создавать правильные пути автоматически. Так же как и для файлов видов, в случае отсутствия нужных файлов в папке темы, их будут искать в основной папке.
В следующих уроках мы реализуем реальный пример использования дизайна загруженной темы для нашего учебного проекта CakePHP.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/zKqZR_JwvgI/lessons.php
Источник: