在将产品添加到购物车之前,我们使用下面的代码自动将用户登录到 Magento。
有时,下面的代码可以工作,但产品没有被添加到购物车,因为登录没有“粘住”。似乎会话是问题所在。如果我们让我们的网络服务器长时间不重启,Magento 似乎会“忘记”它创建的会话,并且下面的代码会失败,因为产品没有向购物车添加任何东西。
// This call is actually in a class called Login_model, function called dual_login
// It is shown below.
$lm = new Login_model();
$ret = $lm ->dual_login($Username, $Password);
if ($ret['result'] = 'SUCCESS') {
$product_id = Mage::getModel("catalog/product") -> getIdBySku("$sku");
$product = Mage::getModel("catalog/product") -> load($product_id);
$session = Mage::getSingleton("core/session", array("name" => "frontend"));
$cart = Mage::helper("checkout/cart") -> getCart();
$cart -> addProduct($product, 1);
$session -> setLastAddedProductId($product -> getId());
$session -> setCartWasUpdated(true);
$cart -> save();
$cart_url = $site_url_https . "store/checkout/cart";
header("Location: " . $cart_url);
}
//
// dual_login code below
//
Mage::getSingleton('core/session', array('name'=>'frontend'));
$customer = Mage::getModel('customer/customer');
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($Email);
$session = Mage::getSingleton('customer/session');
$session->login($Email,$Password);
$session->setCustomerAsLoggedIn($session->getCustomer());
//
// How can I determine here if the login was actually successful
// and the product can be added to the cart?
//
$ret['result'] = 'SUCCESS';
如果我添加对 $session->isLoggedIn() 的调用,它会返回 true,但产品仍未添加到购物车中。
什么会导致 Magento 这样做,我将如何对其进行测试,以便我可以得到它正在发生的通知?