Cakephp 从外部ctp文件获取块

Cakephp 从外部ctp文件获取块,cakephp,view,block,cakephp-2.1,Cakephp,View,Block,Cakephp 2.1,我阅读和阅读。 但是我找不到答案 我有一个文件,其中存在我的操作视图: 查看/MyController/index.ctp 我也有这个文件 查看/Commons/blocks.ctp Blocks.ctp文件包括以下内容: $this->start('sidebar1'); echo 'Some content'; $this->end(); $this->start('sidebar2'); echo 'Some content more'; $this->end()

我阅读和阅读。 但是我找不到答案

我有一个文件,其中存在我的操作视图: 查看/MyController/index.ctp

我也有这个文件 查看/Commons/blocks.ctp

Blocks.ctp文件包括以下内容:

$this->start('sidebar1');
echo 'Some content';
$this->end();

$this->start('sidebar2');
echo 'Some content more';
$this->end();

因此,在“index.ctp”文件中,我想获取侧边栏1侧边栏2。 我该怎么做? 我把这篇文章写到了index.ctp,但没有成功

<?php echo $this->fetch('sidebar1'); ?>

而且这个也没用

<?php echo $this->fetch('../View/Commons/blocks.ctp/sidebar1'); ?>


谢谢

放在索引顶部。ctp:

$this->extend('Common/blocks.ctp');
使用块和视图继承,您可以创建基本上类似于标准蛋糕布局文件的“子布局”。因此,您将拥有main layout.ctp,控制器操作视图ctp将基于通过块“填充”的父视图文件(例如/Commons/xxxx.ctp)

块与元素类似,但不太“正式”,除非使用“视图继承”功能。它们的标记和数据在脚本中创建,可能位于多个位置,因此调试/维护它们会更加麻烦(例如,想象一下将标记附加到来自多个类的块中)。如果不使用继承,它们也更难重用

元素更像是可以在任何控制器+操作视图或布局中使用的独立视图文件:所有标记都在一个位置,您只需传入数据


一句话:如果你对蛋糕还不熟悉,你只需要一些元素就可以过得很好。视图继承有助于使视图/布局更加优雅,但要付出一些复杂性的代价。

您不使用元素的原因是什么?元素也可以单独缓存。@谢谢您的回复。我是初学者,所以我不知道“视图块”和“元素”之间的区别。我认为“视图块”在版本2.1中是新的,但是元素存在了很长时间。它们的用法似乎很相似,但是回显元素和获取块之间有什么区别呢?再次感谢您的详细回复。几个月内,我将使用元素。我可能过一会儿再去街区。现在我尝试设置元素的使用逻辑。我为我的每个元素添加了一个ctp文件,我可以成功地回显元素。我正在寻找最佳实践。>>我应该将元素放入布局文件并将参数传递给视图文件中的元素吗?>>还是应该将参数从控制器文件传递给元素?>>否则会变得复杂,不是吗?控制器->视图->元素布局>>还是建议的做法?谢谢你,只有当元素出现在你网站的每一页上时,你才会在版面中放置元素。否则,应始终在控制器中填充数据,然后在视图中将数据传递给元素。(元素通过
echo
语句显示,因此它们仅在视图/布局中有意义)