【问题标题】:disable view rendering in magento在magento中禁用视图渲染
【发布时间】:2012-09-01 02:12:03
【问题描述】:

如何在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 阅读器无法打开 myfile.pdf,因为它不是受支持的文件类型或文件已损坏。现在我需要调用这两行

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

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

【问题讨论】:

    标签: php zend-framework magento zend-pdf


    【解决方案1】:

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

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

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

    【讨论】:

    • 我在 echo $pdfString 之前尝试了上面的代码块,Pdf 文档仍然包含 html 内容。现在实际的 pdf 内容消失了,这意味着上面的代码删除了 Pdf 内容而不是 html 内容。我也认为 Mage::getSingleton('core/layout');或 $layout = $this->getLayout();不返回正确的布局。你能帮忙吗...
    • 为了更好地理解我的问题,请看这个问题stackoverflow.com/questions/12214990/…
    • 您可以尝试致电$this->getLayout() 看看是否可行吗? $pdfString 不应该消失,因为您直接回显它。禁用视图呈现和布局不会影响 printed 或 echoed 的内容。
    猜你喜欢
    • 1970-01-01
    • 2020-01-29
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多