在CakePHP中,我们使用默认值。ctp只做框架HTML, <body>
只包含$content_for_layout
。这是伟大的大多数页面的mysite.com
。但是,假设mysite.com/account/
中的视图需要共享一个导航栏。对于帐户区域下的视图,哪种方法是正确的?
<!-- 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) Something else
谢谢,布莱恩
通常我的做法是选项A。但我把$this->element('account_nav');
放在布局中。这可以防止将代码放在每个视图中。
如果导航需要配置或禁用,只需向布局中添加逻辑,并像往常一样将变量传递给视图。然后,如果需要,您可以从任何操作配置它。
最终,这是一种混合方法。但是根据我的经验提供了最大的灵活性
我是非常新的CakePHP,所以我不知道什么具体的好处A和B可能带来,但似乎如果你想重用相同的导航条形码在多个视图(显然是一个好主意),简单(C)使用PHP的包括函数包括所需的。html或。PHP文件?
我想这取决于你的导航栏到底是什么:任何比HTML链接更复杂的东西,我的想法都很糟糕。:/