我有这个文件,其中存在我的操作 View : View/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”文件中,我想获取sidebar1或sidebar2。 我怎样才能做到这一点? 我将其写入index.ctp,但没有工作。
<?php echo $this->fetch('sidebar1'); ?>
而且这个也不起作用
<?php echo $this->fetch('../View/Commons/blocks.ctp/sidebar1'); ?>
谢谢
最佳答案
放在你的index.ctp的顶部:
$this->extend('Common/blocks.ctp');
通过 block 和 View 继承,您可以创建基本上类似于标准 Cake 布局文件的“子布局”。因此,您将拥有主layout.ctp,并且 Controller 操作 View ctp将基于通过 block “填充”的父 View 文件(例如/Commons/xxxx.ctp)。
block 类似于元素,但不太“正式”,除非您使用“ View 继承”功能。它们的标记和数据是在您的脚本中创建的,可能在多个位置,因此它们的调试/维护可能会更加麻烦(即想象将标记附加到来自多个类的 block )。如果不使用继承,它们也很难重用。
元素更像是独立的 View 文件,可以在任何 Controller +操作 View 或布局中使用:所有标记都在一个位置,您只需传递数据。
底线:如果您是 Cake 新手,您只需使用元素就可以顺利完成。 View 继承可以帮助使 View /布局更加优雅,但代价是增加一些复杂性。
关于cakephp - 从外部 ctp 文件中获取 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113765/