#php #jquery #ajax #magento #wkhtmltopdf
#php #jquery #ajax #magento #wkhtmltopdf
Вопрос:
Моя цель здесь — иметь возможность генерировать PDF-файл из HTML-страницы с помощью magento. Однако я застрял при успешном выполнении ajax-запроса.
Я получил свой вызов ajax для работы, однако он не возвращает то, что у меня есть в моем файле Specsheetpdf.phtml.
Возможно, я делаю это неправильно, я довольно новичок в этом.
В файле view.phtml, который находится в папке темы, у меня есть этот код, который использует ajax при нажатии кнопки для вызова файла specsheetpdf.phtml, который генерирует pdf:
jQuery(document).ready(function() {
jQuery( "input#printPDF_RDT" ).click(function() {
//get all value
var prod_name = jQuery("#product_name_RDT").text();
var prod_details = jQuery(".box-description .std").html();
var prod_image = jQuery(".product-image #image").attr('src');
//Before we get the options html we need to wrap it around a div to make things easy
jQuery("#product-options-wrapper").wrap("<div id='product_options_RDT'></div>");
//Now get the html in the created div
var prod_options = jQuery("#product_options_RDT").html();
var prod_sku = jQuery("#showsku").text();
// Do AJAX call to makePDF.php
jQuery.ajax({
type: "POST",
url: "<?php echo $this->getUrl('specsheetpdf/ajax/index') ?>",
data: { product_name: prod_name , product_details: prod_details,
product_image: prod_image, options_html : prod_options,
product_sku : prod_sku },
success: function(data) {
jQuery('#results_rdt').html(data);
}
});
});
});
В качестве теста specsheetpdf.phtml должен повторять название продукта, но прямо сейчас я получаю шаблон с пустым телом. Если это имеет смысл. он возвращает html веб-страницы без содержимого в теле.
Вот мой код для модуля, который я сделал:
app/code/local/Rdtmodules/Specsheetpdf/controllers/AjaxController.php
class Rdtmodules_Specsheetpdf_AjaxController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
}
}
app/code/local/Rdtmodules/Specsheetpdf/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Rdtmodules_Specsheetpdf>
<version>0.1.0</version>
</Rdtmodules_Specsheetpdf>
</modules>
<frontend>
<routers>
<Specsheetpdf>
<use>standard</use>
<args>
<module>Rdtmodules_Specsheetpdf</module>
<frontName>specsheetpdf</frontName>
</args>
</Specsheetpdf>
</routers>
<layout>
<updates>
<specsheetpdf>
<file>specsheetpdf.xml</file>
</specsheetpdf>
</updates>
</layout>
</frontend>
</config>
app/etc/modules/Rdtmodules_Specsheetpdf.xml
<?xml version="1.0"?>
<config>
<modules>
<Rdtmodules_Specsheetpdf>
<active>true</active>
<codePool>local</codePool>
</Rdtmodules_Specsheetpdf>
</modules>
</config>
frontend/default/default/layout/specsheetpdf.xml
<?xml version="1.0"?>
<layout version="1.0">
<specsheetpdf_ajax_index>
<block type="specsheetpdf/specsheetpdf" name="root" output="toHtml" template="specsheetpdf/specsheetpdf.phtml" />
</specsheetpdf_ajax_index>
</layout>
интерфейс/по умолчанию/default/template/specsheetpdf/specsheetpdf.phtml
$product_name = $_POST['product_name'];
$product_details = $_POST['product_details'];
$product_image = $_POST['product_image'];
$options_html = $_POST['options_html'];
$product_sku = $_POST['product_sku'];
echo $product_name;
Я что-то делаю не так? Был бы очень признателен за помощь.
Ответ №1:
Это сработало: l оказывается, когда я размещал здесь информацию, я исправился: l. Welp надеюсь, это поможет и кому-то еще 🙂