При попытке создать корзину AJAX в Magento, параметры конфигурации не отображаются - PullRequest
0 голосов
/ 19 августа 2011

ПРОБЛЕМА: Я пытаюсь создать корзину 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).

Кто-нибудь знает, почему информация отсутствует? Единственная причина, по которой я использую оригинальный контроллер, заключается в том, что он, вероятно, делает некоторые важные вещи, но он все еще не работает !!

Заранее спасибо.

1 Ответ

0 голосов
/ 21 августа 2011

Я сам нашел проблему, проблема с обновлениями макета (local.xml текущей темы):

<action method="addItemRender">
  <type>configurable</type>
  <block>checkout/cart_item_renderer_configurable</block>
  <template>checkout/cart/item/default.phtml</template>
</action>

Я еще раз взглянул на checkout.xml темы base / default и ондобавил несколько addItemRender (layout xml) методов в блок cart/checkout под дескриптором checkout_cart_index.Специально для моей проблемы, вышеупомянутый элемент отсутствовал, и это испортило отображение настраиваемого товара в корзине.Должен быть загружен специальный тип блочного объекта, который на самом деле имеет (PHP) метод getOptionList().

...