CakePHP: Manual11/Views

Отображения

Отображение это с страница-шаблон, обычно названная так же как и действие. Например, отображение для Posts Controller::add() будет /app/views/posts/add.thtml. Отображения Cake это довольно простые PHP-файлы, так что вы можете использовать любой PHP-код внутри них. Хотя большинство ваших файлов отображений и будут включать в себя HTML, но отображение может быть чем угодно: XML, изображения и т.д.

В файле отображения, вы можете использовать данные из соответствующей модели. Эти данные вставляются как вызванный масив $data. Любые данные переданные в отображение использованием set() в контроллере, теперь также доступны и в вашем отображении.

HTML Хелпер доступен в любом отображении по умолчанию, и является самым частоиспользуемым хелпером в отображениях. Он очень полезен при создании форм, включающий скрипты и медиа, связывающий и вспомогательный в проверке данных. Более подробно можете посмотреть в главе «Хелперы».

Большинство функций доступных в отображениях предоставлены Хелперами. Cake снабжен большим набором хелперов (о них в главе «Хелперы») и вы можете также включать собственные. Поскольку отображения не должны содержать много кода, есть немного используемых функций в классе отображений. Одна из полезных это renderElement(), о которой речь пойдет в разделе 1.2.

Верстка

Верстка содержит в себе весь предъявляемый код, который обволакивает отображение. Все что вы хотите увидеть во всех ваших отображениях должно быть размещено в вашей верстке.

Файлы верстки находятся в /app/views/layouts. Верстка по умолчанию Cake может быть заменена на новую в /app/views/layouts/default.thtml. Когда новая верстка по умолчанию создана, код отображения контроллера помещается внутрь верстки, когда страница рендерится.

Когда вы создаете верстку, вам нужно сообщать Cake'у где разместить код отображения вашего контроллера: чтобы сделать это, убедитесь, что ваша верстка влючает место для $content_for_layout (и опционально $title_for_layout). Вот пример того как может выглядить верстка по умолчанию:

Самый простой способ установить заголовок для вашего отображения – это использование переменной $pageTitle из контроллера.

<?

class UsersController extends AppController

{

    function viewActive()

    {

        $this->pageTitle 'View Active Users';

    }

}

?>

Вы можете создать столько видов верстки сколько только пожелаете для вашего сайта в Cake, просто поместите их в директорию app/views/layouts, и переключайтесь между ними в действиях вашего контроллера, используя переменную контроллера $layout, или функцию setLayout().

Например, если раздел моего сайта включает место для малейшего рекламного баннера, я могу создать новую верстку с маленьким местом для рекламы и объявить эту верстку для всех действий контроллера, использовав что-то вроде:

var $layout = 'default_small_ad';

Элементы

Многие приложения имеют небольшие блоки кода, который должен быть на каждой странице, иногда в разных местах. Cake может помочь вам повторять куски вашего веб-сайта, которые нужно неоднократно использовать. Эти повторяющиеся части называются элементами. Реклама, блоки помощи, навигационный контроль, дополнительные меню и выноски представлены в Cake как элементы. Элемент это в основном мини-отображение, которое можно включать в другие отображения.

Элементы обитают в каталоге /app/views/elements/, имеют расширение .thtml.

Элемент по умолчанию не имеет никакого доступа к данным. Чтобы дать им доступ к данным, вы посылаете их с проименованым параметром в масив.

Вызов элемента без параметров

<?php echo $this->renderElement('helpbox'); ?>

Вызов элемента с вставленным масивом данных

<?php echo

$this->renderElement('helpbox', array("helptext" => "Oh, this text is very helpful."));

 ?>

Внутри файла элемента, все вставленные переменные доступны как имена ключей вставленного масива (больше похоже на set() в работе контроллеров с отображениями). В предыдушем примере, файл /app/views/elements/helpbox.thtml мог использовать переменную $helptext. Конечно, лучше вставлять масив в элемент.

Элементы можно использовать для того, чтобы делать отображения более удобчитаемыми, помещая в них повторяющиеся элементы. Они также могут помочь вам в переиспользовании фрагментов контента вашего веб-сайта.