Cakephp,将视图添加到侧边栏
Posted
技术标签:
【中文标题】Cakephp,将视图添加到侧边栏【英文标题】:Cakephp, adding a view to a sidebar 【发布时间】:2014-04-04 20:19:12 【问题描述】:我正在努力理解 cakephp 的视图、块和布局。
我需要每个页面都显示一个左右侧边栏,哪些内容可能会改变。目前,我在 /pages/home.ctp 中定义了右侧边栏,但我猜测扩展该边栏会更好,因为它必须出现在每个页面中。如果这个想法是错误的,请纠正我。
然后,我为“usuarios”表提供了这个视图add.ctp,它实际上显示了登录名和密码字段。我想在侧边栏中显示这个视图,但我真的不知道该怎么做。
提前致谢。
【问题讨论】:
【参考方案1】:让这件事变得简单。正如@patrick 所说,有很多方法。
从布局文件开始。重新排列你的 default.ctp 布局,如-
default.ctp 布局
<div id="container">
<div id="header">
<?php echo $this->element('header');?>
</div>
<div id="left-sidebar">
<?php echo $this->element('left-sidebar');?>
</div>
<div id="content">
<?php echo $this->Session->flash(); ?>
<?php echo $this->fetch('content'); ?>
</div>
<div id="right-sidebar">
<?php echo $this->element('right-sidebar');?>
</div>
<div id="footer">
<?php echo $this->element('footer');?>
</div>
</div>
现在创建元素 ctp 文件为 header.ctp、left-sidebar.ctp、right-sidebar.ctp 等并将它们放置到app/View/Elements
。
您的 left-sidebar.ctp 文件可能如下所示...
left-sidebar.ctp
// to show login form //
if you just need to show on view.ctp place few logic here for login form.
//end login form//
show other sidebar contents
【讨论】:
【参考方案2】:有几种方法可以做到这一点,具体取决于您的 Cake 版本。如果您使用 >=2.1(我假设您是因为您询问了块),那么您应该尝试这些以查看它们是否适用于您的设置。我通常做事的方式是,如果控制器的所有视图都需要公共标记,那么这些视图文件将扩展控制器目录中的基本视图,例如
#/View/Posts/index.ctp
<?php
$this->extend('_skel'); //arbitrary filename, I use '_skel' since that makes sense
echo $this->html->para(null, 'Hello');
#/View/Posts/_skel.ctp
<?php
echo $this->Html->div('sidebar', 'Sidebar for posts...');
echo $this->fetch('content'); // This gets all output from the Posts/index.ctp view
那么你所有扩展 _skel 的帖子视图都会自动拥有侧边栏。
您的登录模块可能作为一个元素有意义 - 可以在您的视图中的任何位置使用。
【讨论】:
以上是关于Cakephp,将视图添加到侧边栏的主要内容,如果未能解决你的问题,请参考以下文章