我有这个文件,其中存在我的操作视图: 查看/ 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'); ?>
谢谢
答案 0 :(得分:3)
放在index.ctp的顶部:
$this->extend('Common/blocks.ctp');
使用块和视图继承,您可以创建“子布局”,它们基本上类似于标准的Cake布局文件。所以你有主layout.ctp,控制器动作视图ctp将基于父视图文件(例如/Commons/xxxx.ctp),它通过块“填充”。
除非使用“视图继承”功能,否则块就像元素一样,但不那么“正式”。他们的标记&amp;数据在脚本中创建,可能在多个位置创建,因此调试/维护可能会更麻烦(例如,想象将标记附加到多个类的块中)。如果不使用继承,它们也很难重用。
元素更像是可以在任何控制器+操作视图或布局中使用的独立视图文件:所有标记都在一个位置,您只需传入数据。
底线:如果你是Cake的新手,你可以通过简单的元素来完成。视图继承有助于使视图/布局更加优雅,但代价是复杂。