从外部ctp文件中获取块

时间:2012-04-11 20:50:27

标签: cakephp view block cakephp-2.1

我看了thisthis。 但我找不到答案。

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

我也有这个档案 查看/共享/ blocks.ctp

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

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

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

因此,在“ index.ctp ”文件中,我想获取 sidebar1 sidebar2 。 我怎样才能做到这一点? 我把它写到 index.ctp ,但没有用。

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

这个也不起作用

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

谢谢

1 个答案:

答案 0 :(得分:3)

放在index.ctp的顶部:

$this->extend('Common/blocks.ctp');

使用块和视图继承,您可以创建“子布局”,它们基本上类似于标准的Cake布局文件。所以你有主layout.ctp,控制器动作视图ctp将基于父视图文件(例如/Commons/xxxx.ctp),它通过块“填充”。

除非使用“视图继承”功能,否则块就像元素一样,但不那么“正式”。他们的标记&amp;数据在脚本中创建,可能在多个位置创建,因此调试/维护可能会更麻烦(例如,想象将标记附加到多个类的块中)。如果不使用继承,它们也很难重用。

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

底线:如果你是Cake的新手,你可以通过简单的元素来完成。视图继承有助于使视图/布局更加优雅,但代价是复杂。