Cakephp,为侧边栏添加视图

时间:2014-04-04 20:19:13

标签: php html cakephp view sidebar

我正在努力了解cakephp的观点,块和布局。

我需要每个页面都显示左侧和右侧边栏,内容可能会发生变化。此时我在/pages/home.ctp中定义了右侧边栏,但我猜测扩展侧边栏会更好,因为它必须出现在每个页面中。如果这个想法错了,请纠正我。

然后,我将这个视图 add.ctp 用于' usuarios '表,它实际上显示了字段login和password。我想在侧边栏中显示这个视图,但我真的迷失了如何做到这一点。

提前致谢。

2 个答案:

答案 0 :(得分:3)

让我们轻松一点。就像@patrick说的那样,有很多方法。

从布局文件开始。重新排列default.ctp布局,如 -

default.ctp layout

<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文件可能如下所示......

<强>左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

答案 1 :(得分:0)

根据你的Cake版本,有几种方法可以做到这一点。如果你使用&gt; = 2.1(我假设你是因为你询问了块),那么你应该尝试一下,看看它们是否适用于你的设置。我通常做的事情是,如果控制器的所有视图都需要通用标记,那么这些视图文件将扩展Controller目录中的基本视图,例如。

#/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的帖子视图都会自动显示侧栏。

您的登录模块可能是一个有意义的元素 - 可以在您的视图中的任何位置使用。