2016-09-05 4 views
1

後アップデートミニカート、私は、PHPスクリプトにプロダクトIDを渡す簡単なAJAXのポストを持っている:ここではMagentoの1.8 - Magentoの内のカスタムページでAJAX POST

jQuery.ajax({ 
    url: 'https://www.mywebsite.com/test/add_to_basket.php', 
    type: "POST", 
    data: data, 
    success: function (data) { 
    , 
    error: function (data) { 
    } 
}); 

はadd_to_basketのPHPスクリプトです:

$i = $_POST['i']; 

require_once '../app/Mage.php'; 
umask(0); 
Mage::app(); 

Mage::init('default'); 
Mage::getSingleton('core/session', array('name' => 'frontend')); 

$session = Mage::getSingleton('customer/session'); 

$cart = Mage::getSingleton('checkout/cart'); 
$cart->init(); 

$cart->addProduct($i, 1); 

$session->setCartWasUpdated(true); 

$cart->save(); 

これは完全に機能しますが、ミニカートは更新されません。私は[frontName]/[ActionPath]/[ACTIONNAME]でどうなるかはわからないが

<?xml version="1.0"?> 
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd"> 
    <action name="[frontName]/[ActionPath]/[ActionName]"> 
     <section name="cart"/> 
    </action> 
</config> 

:私はそうのようななど/フロントエンド内sections.xmlファイルを作成する必要があることを読みました私の例。最高の行動方針は何ですか?

答えて

0

最も重要なこと - ajax.php:

require_once('/var/www/clients/client0/web1/web/app/Mage.php'); // ABSOLUTH PATH TO MAGE 
umask(0); 
Mage::app(); 

Mage::getSingleton('core/session', array('name'=>'frontend')); // GET THE SESSION 

$simbol= Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol(); // GET THE CURRENCY SIMBOL 
$store=Mage::app()->getStore()->getCode(); // GET THE STORE CODE 

$cart = Mage::getSingleton('checkout/cart'); //->getItemsCount(); 

$ajtem=$_POST['item']; // THIS IS THE ITEM ID 
$items = $cart->getItems(); 
foreach ($items as $item) { // LOOP 
    if($item->getId()==$ajtem){ // IS THIS THE ITEM WE ARE CHANGING? IF IT IS: 
     $item->setQty($_POST['qty']); // UPDATE ONLY THE QTY, NOTHING ELSE! 
     $cart->save(); // SAVE 
     Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 
     echo '<span>'; 
     if($store=='en') echo $simbol; 
     echo number_format($item->getPriceInclTax() * $_POST['qty'],2); 
     if($store=='hr') echo ' '.$simbol; 
     echo '</span>'; 
     break; 
    } 

} 

// THE REST IS updatTotalG FUNCTION WHICH IS CALLED AFTER AJAX IS COMPLETED 
// (UPDATE THE TOTALS) 
echo '<script type="text/javascript">'; 
echo 'function updateTotalG(){'; 
echo 'jQuery("#sveUkupno").html(\''; 
echo '<strong><span>'; 
//echo 'JQuery(\'#sveUkupno\').html("<strong><span>'; 
if($store=='en') echo $simbol; 
echo number_format(Mage::getSingleton('checkout/session')->getQuote()->getGrandTotal(),2); 
//echo $simbol . ' </span></strong>");'; 
if($store=='hr') echo ' '.$simbol; 
echo " </span></strong>');"; 
echo '} </script>'; 

あなたは私たちがスクリプトと使用されている 店で通貨記号を検出することがわかります。スクリプトの最後に、カート量の値を表示するために使用する updateTotalGスクリプトを生成します。 値はMagentoからの値です。

関連する問題