отключить рендеринг вида в magento

Как вызвать следующие две строки в файле \app\code\core\Mage\Wishlist\Helper\Data.php magento

$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 Reader не удалось открыть файл myfile.pdf, потому что это либо неподдерживаемый тип файла, либо файл поврежден. Теперь мне нужно вызвать эти две строки

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

в функции getPdf(), чтобы она не добавляла html-содержимое в pdf-документы. Можете ли вы помочь мне в этом?


person Nida    schedule 31.08.2012    source источник


Ответы (1)


Перед повторением $pdfString добавьте следующий код, чтобы отключить визуализацию представления и макет:

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

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

Если вызов Mage::getSingleton() не возвращает правильный объект макета, вы также можете попробовать $layout = $this->getLayout();

person drew010    schedule 31.08.2012
comment
Я попробовал приведенный выше фрагмент кода перед эхом $ pdfString, документ Pdf все еще содержит содержимое html. Теперь фактическое содержимое pdf исчезает, что означает, что приведенный выше код удаляет содержимое Pdf вместо содержимого html. Также я думаю, что Mage::getSingleton('core/layout'); или $layout = $this-›getLayout(); не возвращает правильный макет. Не могли бы вы помочь... - person Nida; 01.09.2012
comment
Для лучшего понимания моей проблемы, пожалуйста, посмотрите этот вопрос html-contents/12217962#12217962" title="документ zend pdf вызывает ошибку в magento из-за наличия содержимого html"> stackoverflow.com/questions/12214990/ - person Nida; 01.09.2012
comment
Можете попробовать вместо этого позвонить $this->getLayout() и посмотреть, сработает ли это? $pdfString не должен исчезать, так как вы повторяете его напрямую. Отключение рендеринга представлений и макетов не влияет на содержимое с printed или echoed. - person drew010; 01.09.2012