我正在努力了解cakephp的观点,块和布局。
我需要每个页面都显示左侧和右侧边栏,内容可能会发生变化。此时我在/pages/home.ctp中定义了右侧边栏,但我猜测扩展侧边栏会更好,因为它必须出现在每个页面中。如果这个想法错了,请纠正我。
然后,我将这个视图 add.ctp 用于' usuarios '表,它实际上显示了字段login和password。我想在侧边栏中显示这个视图,但我真的迷失了如何做到这一点。
提前致谢。
答案 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的帖子视图都会自动显示侧栏。
您的登录模块可能是一个有意义的元素 - 可以在您的视图中的任何位置使用。