0

我正在尝试根据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>标题和默认值,而不是扩展视图。

我看到了如何使用 cakephp 在另一个视图中调用视图的问题,但是根据本书,该$this->extend(...)函数应该可以轻松完成此操作。我错过了什么?

有人可以展示一个工作示例吗?

4

1 回答 1

2

阅读CakePHP 的书籍条目,似乎期待一个“通用”视图存储在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().

于 2013-06-12T11:26:38.763 回答