我正在尝试根据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(...)
函数应该没有任何额外的麻烦。我错过了什么?
有人可以展示一个有效的例子吗?
答案 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()
。