我试图将操作从一个视图渲染到另一个控制器视图中。将操作从一个控制器渲染到CakePHP中不同控制器的视图中
我有一个名为stocks.ctp
(使用StocksController
)一个一个观点,我想在home.ctp
(HomeController
)来呈现我想我可能只是做<?php echo $this->fetch('../Stocks/stocks'); ?>
在home.ctp
,但不工作。
我也试图把<?PHP $this->extend('stocks'); ?>
在home.ctp
但只是覆盖整个视图,并只呈现stocks.ctp
。
如何在home.ctp
内显示stocks.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>
我该如何正确渲染它?我尝试了一堆我在这里找到的解决方案,但没有任何工作,我尝试了使用食谱的文档,但没有运气。我无法弄清楚我做错了什么。
很酷,我现在在看。我看到我需要将一个变量传递给它们,我可以使用find方法做到这一点吗?在文档中它说'<?php echo $ this-> element('helpbox',array(“helptext”=>“哦,这段文字非常有帮助。”));?>'但我可以做'<? php echo $ this-> element('helpbox',array(“helptext”=> $ this-> Post-> find('all'));?>'?或者我做这样的事情'<?php echo $ this-> element('helpbox',array(“helptext”));?>'然后在helbox.ctp元素中执行'<?php $ helptext = $ this-> requestAction('Posts/index/');?>'? – user3298823 2014-09-19 20:54:10
查找方法应该在控制器中使用,视图只需要包含展览代码。在你的控制器中,你可以这样做:$ posts = $ this-> Post-> find('all'); $ this-> set('posts',$ posts);然后$ posts将在你的视图中可用,所以:$ this-> element('posts',array('data'=> $ posts));希望能帮助到你。 requestAction是有效的,但是由于新的请求,你失去了一点性能。我更愿意直接在当前控制器操作中设置变量。你可以在这里阅读更多关于$ this-> requestAction:http://book.cakephp.org/2.0/en/controllers.html#Controller::requestAction – andtxr 2014-09-19 21:04:01