0

问题:我正在尝试在 magento 中构建 AJAX 购物车,但我似乎无法获取可配置产品的所选配置选项。我相信正在调用正确的方法 ( $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的时候测试过

索引.phtml:

<?php echo $this->getChildHtml('cart'); ?>

显示.phtml:

<?php foreach($this->getItems() as $_item): ?>
    <?php $_renderer = $this->getItemRenderer($_item->getProductType())->setItem($_item); ?>
    <?php /* render an item */ ?>
<?php endforeach; ?>

在这个上下文中看到是$this指 Mage_Checkout 模块的 Cart Block,并且在getItemHtml()这个类的方法(实际上是它的超类)中挖掘,我发现购物车中每个项目的块对象是使用show.phtml上面示例中的第二行检索的( $_renderer)。

有谁知道为什么缺少信息?我使用原始控制器的全部原因是它可能正在做一些重要的事情,但它仍然无法正常工作!

提前致谢。

4

1 回答 1

0

我自己发现了问题,布局更新(当前主题的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,它在句柄下的块中显示了一些addItemRender(布局 xml)方法。特别是对于我的问题,上面的元素丢失了,这弄乱了购物车中可配置产品项目的呈现。需要加载实际上具有 (PHP) 方法的特殊类型的块对象。cart/checkoutcheckout_cart_indexgetOptionList()

于 2011-08-21T11:51:19.253 回答