禁用magento中的视图渲染


disable view rendering in magento

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

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

实际上,在Data.php中有一个自己创建的函数getPdf(),用于生成愿望列表项的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阅读器无法打开myfile.pdf,因为它不是受支持的文件类型,或者因为文件已损坏。现在我需要把这两条线路称为

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

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

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

$vr = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$vr->setNoRender(true);
$layout = Mage::getSingleton('core/layout');
$layout->disableLayout();

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