Magento 1.9.0.1 по умолчанию не добавляет ключ формы внутри & quot; getDeleteUrl & quot; но для & quot; getAddToCartUrl & quot;

Когда я сделал чистую установку 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: Почему удаление продукта не работает

Предполагая, что вы используете "/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

Для удаления продуктов не требуется ключ формы. Либо это не было добавлено, потому что они не считали это достаточно важным, либо его просто забыли. В любом случае, функция удаления должна работать без ключа формы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]