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

时间:2013-05-03 08:08:47

标签: php cakephp

我只是新的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(); ?>

displayphone.ctp

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

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

4 个答案:

答案 0 :(得分:8)

如你所说,

 $this->fetch('homeview');

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

除非为此创建元素,否则无法在视图中调用另一个视图。元素是HTML的通用集合,可以在整个项目中的任何视图文件中使用。为了上述目的,在视图中的Element文件夹中按名称“displayphone.ctp”创建一个元素,然后像

一样调用它
 $this->element('displayphone');

希望这会解决你的目的。

答案 1 :(得分:3)

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

例如,您可以查看2个视图 查看/用户/ login.ctp 查看/用户/ register.ctp

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

对于CakePHP 3,请使用此

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