У меня есть следующий сценарий ajax, который я тестирую. Мне было рекомендовано использовать $ item-> getProduct() -> setIsSuperMode (true);, но я получаю ошибку: * PHP Неустранимая ошибка: вызовите функцию-член setIsSuperMode() для не-объекта в /var/www/Staging/public_html/ajax_calls/savePrice.php в строке 31 *. Поэтому я удалил, -> getProduct(), и я не получаю сообщение об ошибке, но код по-прежнему не отображает правильную цену при добавлении в корзину. Я не уверен, что неправильно использую setIsSuperMode, или если я запускаю этот вызов ajax слишком рано. Я действительно сосать в разработке модулей, поэтому пытался это сделать. Пожалуйста, посоветуйте, мой разум ошеломлен! Почему динамическая цена не отражается правильно на странице корзины при добавлении продукта?Magento setAsSuperMode не работает
Аякса вызов:
<?php
//error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
require_once('/var/www/Staging/public_html/app/Mage.php');
umask(0);
Mage::app();
//ensure that the value is legitimate
if($_POST && is_numeric($_POST['value'])){
$price = $_POST['price'];
}
//pass this in your ajax call for the add button
if($_POST && is_numeric($_POST['product_id'])){
$product_id = $_POST['product_id'];
}
$helper = Mage::helper('core'); //for translation
$block = new Mage_Catalog_Block_Product_View(); // not best practice, but neither are standalones
$product = Mage::getModel('catalog/product')->load($product_id); // no need to use the _ here, it's not protected/private;
// Set the custom price
$product->setCustomPrice($price);
$product->setOriginalCustomPrice($price);
// Enable super mode on the product.
$product->getProduct()->setIsSuperMode(true);
echo ('Custom Price is ' . $product->getCustomPrice() . '; '); //has correct value
echo ('Custom Original Price is ' . $product->getOriginalCustomPrice() . '; '); //has correct value
?>
Это функция, которая имеет вызов AJAX. Пост-переменные правильные. Он невидимо выбирает применимый раскрывающийся список атрибутов поставщика на странице настраиваемых продуктов, а последняя строка добавляет его в корзину.
function selectAndAddToCart(value)
{
var product_id= <?=$product_id ?>;
var colorSelected = $j("#attribute92 option:selected").val();
$j('#attribute136 option[value="' + value + '"]').prop('selected',true);
$j('#attribute136').removeClass('validation-failed').addClass('validation-passed');
var price = newPriceArray[value][colorSelected];
console.log('The newPriceArray in selectAndAddToCart ' + price); //this is logging correctly
//Save price in system
$j.ajax({
type: "POST",
url: "/ajax_calls/savePrice.php",
data: { 'product_id': product_id, 'price': price}
}).done(function() {
console.log('Prices have been updated in system');
//initiate add to cart function
productAddToCartForm.submit(this);
});//end inner ajax request
}