【发布时间】:2011-08-30 14:38:12
【问题描述】:
在 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) 别的东西
谢谢,布赖恩
【问题讨论】:
标签: model-view-controller cakephp view