2012-04-26 58 views
2

我有一个简单的问题...我如何渲染项目/ application/layouts/scripts/default.phtml中的default.phtml的内容到变量,所以我可以有它的HTML。如何捕获控制器内的变量中的default.phtml

在指数控制器,与动作和PHTML文件名为test,这会工作:

$html = $this->view->render('index/test.phtml'); 

但是,当然,这并不:

$htmlDefaultLayout = $this->view->render('default.phtml'); 

由于default.phtml我想不在任何控制器内。

有没有很好的方法来做到这一点?

+0

一定不知道这个问题。你是否想要获取模板的内容?或者你想让模板全局访问吗? – 2012-04-26 23:54:29

+0

嗨,迈克..感谢您的回答......事情是我需要生成的html,也就是default.phtml – Jack 2012-04-27 00:00:57

+0

的内容所以您希望生成的模板内容,插入模板变量设置的行动,并将渲染(如果您在浏览器中查看)存储在变量中? – 2012-04-27 00:05:56

回答

2

您可以添加到Zend_View看起来在您欣赏到路径,然后你可以渲染default.phtml文件。

实施例:

// add the layout directory to the path 
$this->view->addScriptPath(APPLICATION_PATH . '/layouts/scripts/'); 

$htmlDefaultLayout = $this->view->render('default.phtml'); 

加入到SCRIPTPATH在Zend_View的最后路径是要被检查(LIFO)第一个。

参见View Script Paths

+0

非常感谢,drew010。有效! – Jack 2012-04-27 18:32:56

3

您可以停止渲染并抓住这样的输出:

$this->_helper->layout()->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(true); 
$this->view->addScriptPath(APPLICATION_PATH . '/layouts/scripts/'); //default layout path 
$htmlDefaultLayout = $this->view->render('default.phtml'); 
+0

谢谢Starx。这实际上是我第一次尝试,但问题是没有default.phtml的路径。 – Jack 2012-04-27 18:33:03

+0

该解决方案非常适合我,谢谢@Starx! – 2012-11-09 19:14:07