使用一个控制器中的操作将视图渲染到CakePHP中不同控制器的视图中

时间:2014-09-19 03:12:42

标签: cakephp cakephp-2.0

我正在尝试使用一个视图中的操作渲染到另一个控制器视图的视图。

我有一个名为stocks.ctp的视图(使用StocksController),我希望在home.ctpHomeController)中呈现该视图我认为我可以<?php echo $this->fetch('../Stocks/stocks'); ?>home.ctp,但这不起作用。

我也尝试将<?PHP $this->extend('stocks'); ?>放入home.ctp,但这只会覆盖整个视图,只会呈现stocks.ctp

如何在stocks.ctp内显示home.ctp

这只是一个例子:这是

       <?php $this->start('stocks');?>
         <div>
            content
         </div>
        <?php $this->end(); ?>

这里只是home.ctp视图的示例。

      <div class="col-3">
            <h1>STOCK MARKET WOOOOO</h1>
            <?php echo $this->fetch('stocks'); ?>
        </div>
        <div class="col-3">
            <h1>Opinion</h1>
            <hr></hr>
        </div>

如何正确渲染?我已经尝试了一些我在这里找到的解决方案,但没有任何工作,我已经尝试过使用cookbook的文档,但没有运气。我无法弄清楚我做错了什么。

3 个答案:

答案 0 :(得分:0)

你应该将它放在家用控制器中.. $this->render('Stocks/stocks');

答案 1 :(得分:0)

在您的控制器操作中执行

$this->autoRender = false; 

并在控制器操作结束时执行

$this->render('Stocks/stocks');

答案 2 :(得分:0)

您应该阅读有关如何在CakePHP文档中创建元素的内容。 创建元素后,您应该可以在应用程序中的任何位置使用它们。

  1. 在View / elements中创建元素,例如:/View/elements/stocks.ctp
  2. 请求在home.ctp。
  3. 例如:

    <?php
    
        echo $this->element('stocks');
    
    ?>
    

    应该渲染元素。

    在此处阅读:Elements