禁用magento中的视图渲染

时间:2012-08-31 07:28:21

标签: php zend-framework magento zend-pdf

如何在magento的\app\code\core\Mage\Wishlist\Helper\Data.php文件中调用以下两行

$this->_helper->layout()->disableLayout();   
$this->_helper->viewRenderer->setNoRender();  

实际上Data.php中有一个自创的函数getPdf(),它用于生成wishlist项的pdf。它使用语句

生成没有错误的PDF
$pdf->save("hello.pdf");

但是当我使用以下声明时

$pdfString = $pdf->render();
header("Content-Disposition: attachment; filename=myfile.pdf");
header("Content-type: application/x-pdf");
echo $pdfString;

它抛出错误:Adobe Reader无法打开myfile.pdf,因为它既不是受支持的文件类型,也不是因为文件已损坏。现在我需要调用这两行

$this->_helper->layout()->disableLayout();   
$this->_helper->viewRenderer->setNoRender(); 

在getPdf()函数中,它不会在pdf文档中添加html内容。你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

在回显$pdfString之前,添加以下代码以禁用视图呈现和布局:

$vr = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$vr->setNoRender(true);

$layout = Mage::getSingleton('core/layout');
$layout->disableLayout();

如果Mage::getSingleton()调用未返回正确的布局对象,您还可以尝试$layout = $this->getLayout();