ПРОБЛЕМА:
Я пытаюсь создать корзину AJAX в magento, но не могу выбрать выбранные параметры конфигурации настраиваемых продуктов. Я полагаю, что использую правильный метод ($this->getOptionList()
), чтобы получить их. Он должен вернуть массив с опциями и метками, но ничего не возвращает !! Для ясности, они отображаются в обычной корзине.
ПОЯСНЕНИЯ:
Краткая история о том, как я это делаю:
Я использую Контроллер корзины модуля Mage_Checkout, но я изменяю шаблон на что-то очень минимальное (используя обновления макета в текущей теме) и настраиваемый модуль с определенным в нем маршрутизатором.
Длинная история:
Я создал модуль MyNameSpace_Checkout, в котором я определил маршрутизатор, который связывает frontName 'ajaxcart' с контроллерами в модуле Mage_Checkout.
Теперь в файле local.xml моей текущей темы я поместил следующие обновления макета под дескриптор «ajaxcart_cart_index»:
<ajaxcart_cart_index>
<reference name="root">
<action method="setTemplate">
<template>ajaxcart/cart/index.phtml</template>
</action>
<block type="checkout/cart" name="checkout.cart" template="ajaxcart/cart/show.phtml" as="cart"></block>
</reference>
</ajaxcart_cart_index>
Мой шаблон ('ajaxcart / cart / show.phtml') используется, так что он работал довольно хорошо. Я проверил это, когда я пошел на http://domain.com/ajaxcart/cart
index.phtml:
<?php echo $this->getChildHtml('cart'); ?>
show.phtml:
<?php foreach($this->getItems() as $_item): ?>
<?php $_renderer = $this->getItemRenderer($_item->getProductType())->setItem($_item); ?>
<?php /* render an item */ ?>
<?php endforeach; ?>
Вид в этом контексте как $this
относится к блоку корзины модуля Mage_Checkout, и копаясь в методе getItemHtml()
этого класса (на самом деле его суперкласса), я обнаружил, что объект блока на элемент в корзине извлекается с использованием второй строки в примере show.phtml
выше ($_renderer
).
Кто-нибудь знает, почему информация отсутствует? Единственная причина, по которой я использую оригинальный контроллер, заключается в том, что он, вероятно, делает некоторые важные вещи, но он все еще не работает !!
Заранее спасибо.