0

問題: Magento で AJAX カートを構築しようとしていますが、構成可能な製品の選択した構成オプションを取得できないようです。それらを取得するために正しいメソッド ( ) を呼び出していると思い$this->getOptionList()ます。オプションとラベルを含む配列を返す必要がありますが、何も返しません!! 明確にするために、それら通常のカートに表示されています。

説明: 私のやり方の簡単な話: 私は Mage_Checkout モジュールの Cart Controller を使用していますが、テンプレートを非常に最小限のもの (現在のテーマのレイアウト更新を使用) に変更し、ルーターが定義されたカスタム モジュールを使用しています。初期化。

長い話:

Mage_Checkout モジュールのコントローラーに frontName 'ajaxcart' をバインドするルーターを定義したモジュール MyNameSpace_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; ?>

このコンテキストでは、 Mage_Checkout$thisモジュールのカート ブロックを参照し、getItemHtml()このクラス (実際にはそのスーパークラス) のメソッドを掘り下げてみると、カート内のアイテムごとのブロック オブジェクトがshow.phtml上記のサンプルの 2 行目を使用して取得されることがわかりました。 ( $_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>

base/default テーマの checkout.xml をもう一度見てみると、ハンドルの下のブロックにいくつかのaddItemRender(レイアウト xml) メソッドが含まれていました。特に私の問題では、上記の要素が欠落しており、カート内の構成可能な製品アイテムのレンダリングが台無しになりました。(PHP) メソッドを実際に持つ特別なタイプのブロック オブジェクトをロードする必要があります。cart/checkoutcheckout_cart_indexgetOptionList()

于 2011-08-21T11:51:19.253 に答える