当我完成1.9.0.1的全新安装,并将我的设计文件复制到新安装时,添加到购物车工作正常但是从购物车中删除产品没有。
我注意到在核心文件中,getDeleteUrl使用:
public function getDeleteUrl()
{
if ($this->hasDeleteUrl()) {
return $this->getData('delete_url');
}
return $this->getUrl(
'checkout/cart/delete',
array(
'id'=>$this->getItem()->getId(),
Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED => $this->helper('core/url')->getEncodedUrl()
)
);
}
和getAddToCartUrl使用:
public function getAddToCartUrl($product, $additional = array())
{
if (!$product->getTypeInstance(true)->hasRequiredOptions($product)) {
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
}
$additional = array_merge(
$additional,
array(Mage_Core_Model_Url::FORM_KEY => $this->_getSingletonModel('core/session')->getFormKey())
);
if (!isset($additional['_escape'])) {
$additional['_escape'] = true;
}
if (!isset($additional['_query'])) {
$additional['_query'] = array();
}
$additional['_query']['options'] = 'cart';
return $this->getProductUrl($product, $additional);
}
如果您从上面的代码中注意到,getDeleteUrl没有附加表单键但getAddToCartUrl会这样做,为什么会这样?
答案 0 :(得分:1)
你实际上是在问两个问题,即使你只是陈述一个问题。
问题1:为什么不删除产品
假设您正在使用"/checkout/cart/delete/id/2504/uenc/[encoded url key]/"
,它确实应该有效。请参阅我对第二个问题的回答。
问题2:为什么删除链接中没有表单键。
如果你在这里查看,这个更容易: https://github.com/OpenMage/magento-mirror/blob/magento-1.9/app/code/core/Mage/Checkout/controllers/CartController.php#L490 在这里:https://github.com/OpenMage/magento-mirror/blob/magento-1.9/app/code/core/Mage/Checkout/Model/Cart.php#L441
删除产品不需要表格密钥。要么它没有被添加,因为他们认为它不够重要或者只是被遗忘了。无论如何,删除功能应该没有表单密钥。