我正在尝试构建一个JQuery .post()调用,它将从getQuote模型中删除用户优惠券...我的问题是它没有错误输出,也没有删除代码。这就是我在做的事情:
<?php
$mageFilename = $_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(false);
umask(0);
Mage::app('admin');
$session = Mage::getSingleton('checkout/session');
$quote = $session->getQuote();
$error = "fail";
if (isset($_POST['rem_coup'])) {
Mage::getSingleton("checkout/session")->setData("coupon_code","");
//Apply the coupon to quote incase there is already a product in the cart or a quote is already generated
Mage::getSingleton('checkout/cart')->getQuote()->setCouponCode("")->collectTotals()->save();
$error = "success";
}
echo $error;
?>
当然它返回“成功”,但代码不会被删除。
这是“removeFromCart.php”文件的全部内容。我只需要一个简单的“从购物车删除优惠券代码”脚本,我可以从jQuery .post()调用远程使用。我做错了什么?
答案 0 :(得分:1)
由于您使用单独的脚本与Magento一起使用,因此您需要正确启动会话才能使用Magento的会话。尝试在Mage::app()
之后插入下一个代码:
Mage::getSingleton('core/session', array('name' => 'frontend'))->start();
答案 1 :(得分:1)
我真的想通了......
<?php
$mageFilename = $_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app('*******_english');
$error = "fail";
if (isset($_GET['rem_coup'])) {
Mage::getSingleton('core/session', array('name'=>'frontend'));
Mage::helper('checkout/cart')->getQuote()->setData('coupon_code','')->save();
$error = "success";
}
?>
@ Slayer Birden - 你大部分都是对的。我需要获取核心/会话。但是,通过我的结帐/购物车,我还需要Mage::helper
而不是Mage::getSingleton
。这是Ajax Call的工作版本。