0

我正在为 Magento 编写一个 ajax 扩展程序,当我尝试使用它时遇到问题。

我想在购物车中的任何产品发生更改后重新加载整个区块,包括商品以及购物车总数。

正如许多网站所说,我已经修改了布局,但我无法很好地渲染结帐/购物车块。

我的两个解决方案是:


1° 尝试通过 xml 文件更新布局,我在 $block_cart 中得到一个错误。

我有课

Mati_Ajax_CartController extends Mage_Checkout_CartController
{
...
    public function updateShoppingCartAction()
    {
        ...
        $block_cart = $this->getLayout()->getBlock('checkout/cart');
        ...
    }
}

和一个xml文件(我确定我正在加载,因为js指出那里正在加载)

<checkout_cart_updateshoppingcart>
    <update handle="checkout_cart_index" />
</checkout_cart_updateshoppingcart>

2°试图创建块

public function updateShoppingCartAction()
{
    ...
    $block_cart = $this->getLayout()->getBlockSingleton('checkout/cart')->setTemplate("checkout/cart.phtml")->toHtml();
    ...
}

在这里我得到了块,但是当模板执行时$this->getChildHtml('totals'); 它得到一个错误的答案,所以网页与之前的有些不同


有谁知道如何使这项工作?

4

2 回答 2

0

In your first attempt just append ->toHtml();

Alternatively you could have included that as a command in the xml output="toHtml"

Check how the checkout/onepage/review functions if you are looking for advice. There they access the response object and then set the body of the response to the html variable, in your case $block_cart

于 2013-03-16T01:28:10.617 回答
0

密钥在 xml 文件中

<ajax_cart_updateshoppingcart>
    <update handle="checkout_cart_index" />
</ajax_cart_updateshoppingcart>
于 2013-03-18T16:37:27.253 回答