В CakePHP, скажем, default.ctp просто создает кадрирующий HTML, с <body>
, содержащим только $content_for_layout
. Это отлично подходит для большинства страниц mysite.com
. Однако предположим, что представления в mysite.com/account/
должны иметь общую навигационную панель. Какой подход был бы подходящим для представлений в области учетной записи?
A) Сделать панель навигации своим собственным элементом, и этот элемент включается в каждое представление:
<!-- settings.ctp, profile.ctp, myfiles.ctp ... -->
<div id="account_area">
<?php echo $this->element('account_nav'); }
<div>...</div>
</div>
Что мне действительно не нравится в A), так это то, что каждый .ctp дублирует один и тот же код переноса (хотя и минимальный). Так что, возможно, что-то вроде B) лучше:
B) Создайте представление account/index.ctp
, и каждому действию установите переменную $section
и выполните $this->render('/account/index')
, поместив каждый экран в отдельный элемент:
<!-- /views/account/index.ctp -->
<div id="account_area">
<div id="account_nav">...</div>
<?php echo $this->element("account/$section"); }
</div>
C) Что-то еще
Спасибо, Брайан