如何在cakePHP中扩展视图?

时间:2013-06-12 10:30:04

标签: php templates cakephp

我正在尝试根据cakePHP book创建最基本的扩展视图。 但它不起作用,我无法弄清楚原因。

家长观点:

//Pages/home.ctp
<h2>This is a Map </h2>
<?php echo $this->fetch('map','default value: NO MAP EXTENDED D:'); ?>

这是子视图:

//Locations/View.ctp
<?php
    $this->extend('/Pages/home.ctp');
    $this->start('map');
?>
    <div>
        Hello, I am the map view.
    </div>
<?php $this->end(); ?>

我尝试扩展'Pages / home','/ Pages / home'和'/Pages/home.ctp'。两者都没有工作。 home.ctp页面只显示<h2>标头和默认值,而不是扩展视图。

我看到了问题How to call view in another view by using cakephp,但根据这本书,$this->extend(...)函数应该没有任何额外的麻烦。我错过了什么?

有人可以展示一个有效的例子吗?

1 个答案:

答案 0 :(得分:2)

阅读the CakePHP book条目,似乎期待存储在 app / View / Common / map.ctp 等某个地方的“常见”视图,然后是您的视图以扩展此功能。这个应该在理论上工作:

// app/View/Common/map.ctp
<h1><?php echo $this->fetch('title'); ?></h1>
<?php echo $this->fetch('map'); ?>

然后是您的扩展视图:

<?php
// app/View/Locations/view.ctp
$this->extend('/Common/map');

$this->assign('title', 'Some Title');

$this->start('map');
?>
<div id="map_canvas">
  <p>Hello, world!</p>
</div>
<?php $this->end(); ?>

假设您的控制器名为LocationsController,方法名称为view()