Панель навигации CakePHP Посмотреть структуру - PullRequest
2 голосов
/ 30 августа 2011

В 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) Что-то еще

Спасибо, Брайан

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Обычно я делаю это Вариант А .Но я положил $this->element('account_nav'); в макете.Это предотвращает использование кода в каждом представлении.

Если для навигации требуется настройка или отключение, просто добавьте логику в макет и передайте переменные в представление, как обычно.Затем вы можете настроить его из любого действия, если это необходимо.

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

0 голосов
/ 30 августа 2011

Я очень новичок в CakePHP, поэтому я не знаю, какие конкретные преимущества могут принести A и B, но похоже, что вы хотите повторно использовать один и тот же навигационный штрих-код в нескольких представлениях (очевидно,хорошая идея), просто (C) использовать PHP-функцию include для включения необходимого файла .html или .php?

Я полагаю, это зависит от того, что именно входит в вашу панель навигации: что-нибудь более сложное, чем ссылки HTMLи моя идея умирает довольно плохо.: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...