如何使用cakephp在另一个视图中调用view

如何使用cakephp在另一个视图中调用view,php,cakephp,Php,Cakephp,我只是一个新手,我想知道如何在另一个视图中调用一个视图 当我开始运行CakePhp时,默认布局位于视图/layouts/default.ctp中 在default.ctp中,我调用了一个视图名homeview(view/homes/homeview.ctp) 这是我的代码: <?php echo $this->fetch('homeview'); // this statement here is work ?> 在homeview.ctp中,我调用了另一个名

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

当我开始运行CakePhp时,默认布局位于视图/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.ctphomeview.ctp

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

这是home view
displayphone.ctp

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

此页面显示手机
为什么我不能在homeview中调用displayphone block?

如您所述

 $this->fetch('homeview');
已按名称homeview创建了块,请参阅

除非为此创建元素,否则无法在视图中调用另一个视图。元素是一组通用的HTML,可以在整个项目的任何视图文件中使用。出于上述目的,在视图内的元素文件夹中创建一个名为“displayphone.ctp”的元素,然后像这样调用它

 $this->element('displayphone');

希望这能解决您的问题。

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

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

例如,您有视图2视图 视图/用户/login.ctp 视图/用户/register.ctp

您想在登录视图中调用register视图

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

这将把register视图作为一个元素,并且可以正常工作。

对于CakePHP 3,使用

<?= $this->requestAction('/Users/register') ?>

如何包括
ctp
homeview
displayphone
都是同一个目录。我不需要做任何改变。我不想创建
元素