CakePHP导航栏视图结构



在CakePHP中,我们使用默认值。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) Something else

谢谢,布莱恩

通常我的做法是选项A。但我把$this->element('account_nav');放在布局中。这可以防止将代码放在每个视图中。

如果导航需要配置或禁用,只需向布局中添加逻辑,并像往常一样将变量传递给视图。然后,如果需要,您可以从任何操作配置它。

最终,这是一种混合方法。但是根据我的经验提供了最大的灵活性

我是非常新的CakePHP,所以我不知道什么具体的好处A和B可能带来,但似乎如果你想重用相同的导航条形码在多个视图(显然是一个好主意),简单(C)使用PHP的包括函数包括所需的。html或。PHP文件?

我想这取决于你的导航栏到底是什么:任何比HTML链接更复杂的东西,我的想法都很糟糕。:/

最新更新