5

我只是新的 CakePhp,我想知道如何在另一个视图中调用一个视图。

当我开始运行 CakePhp 时,默认布局位于view/layouts/default.ctp中。

default.ctp中,我将视图名称称为 homeview ( view/homes/homeview.ctp )。

这是我的代码:

<?php 
     echo $this->fetch('homeview'); // this statement here is work
?>

homeview.ctp中,我调用了另一个名为 displayphone ( view/homes/ displayphone.ctp ) homeview.ctp的视图

<?php $this->start('homeview'); ?>
    <h1> This is home view </h1>
    <?php echo $this->fetch('displayphone'); // this statement does not work; ?>
<?php $this->end(); ?>

显示电话.ctp

<?php $this->start('displayphone');?>
    <h1> This page display phone </h1>
<?php $this->end(); ?>

为什么我不能在 homeview 中调用 displayphone 块?

4

4 回答 4

9

正如你提到的,

 $this->fetch('homeview');

已按名称 homeview 创建了一个块,请参阅此http://book.cakephp.org/2.0/en/views.html

至于在视图中调用另一个视图是不可能的,除非您为此创建一个元素。元素是一组通用的 HTML,可以在整个项目的任何视图文件中使用。出于上述目的,在视图内的元素文件夹中创建一个名为“displayphone.ctp”的元素,然后将其称为

 $this->element('displayphone');

希望这能解决您的目的。

于 2013-05-03T08:45:27.387 回答
3

是的,您可以在另一个视图中调用视图(不好,但您可以做到)。

例如,您有 2 个视图 Views/Users/login.ctp Views/Users/register.ctp

并且您想在登录视图中调用注册视图。

// File login.ctp
$this->Element('../Users/register.ctp'); // ('..' . DS . 'Users' . DS . 'register.ctp')

这将注册视图作为一个元素并正常工作。

于 2016-04-17T16:12:21.827 回答
0

为此,您需要创建可以包含在任何视图文件中的元素。

于 2013-05-03T08:49:04.460 回答
0

对于 CakePHP 3,使用这个

<?= $this->requestAction('/Users/register') ?>
于 2017-07-21T15:20:36.647 回答