1

我正在尝试覆盖购物车控制器中的 Magento 中的 couponPostAction 函数。

我创建了一个新的本地模块 Nf_Ajaxcoupon。

这是配置文件

<?xml version="1.0"?>
<config>
    <modules>
        <Nf_Ajaxcoupon>
            <version>0.1.0</version>
        </Nf_Ajaxcoupon>
    </modules>
    <global>

        <rewrite>

            <Nf_Ajaxcoupon_checkout_cart>
                <from><![CDATA[#^/checkout/cart/#]]></from>

                <to>/Ajaxcoupon/checkout_cart/</to>
            </Nf_Ajaxcoupon_checkout_cart>
       </rewrite>
    </global>

    <frontend>
        <routers>
            <Nf_Ajaxcoupon>


                <use>standard</use>

                <args>

                    <module>Nf_Ajaxcoupon</module>



                    <frontName>Ajaxcoupon</frontName>

                </args>

            </Nf_Ajaxcoupon>

        </routers>

    </frontend>

</config>

这是我的模块激活:

<?xml version="1.0"?>
<config>
    <modules>
        <Nf_All>
            <active>true</active>
            <codePool>local</codePool>
        </Nf_All>
    </modules>
</config>

这是我的 CartController.php 文件:

<?php

require_once 'Mage/Checkout/controllers/CartController.php';


class Nf_Ajaxcoupon_Checkout_CartController extends Mage_Checkout_CartController

  {


   function couponPostAction()
    {
    var_dump($_POST);
      die('local');


    }
  }

?>

我不明白为什么它不调用本地控制器,当我转到系统->配置->高级时,我看到它已启用。

有什么建议为什么它不起作用或调试它的方法?

谢谢

4

1 回答 1

1

这是在前端节点的配置中覆盖控制器的正确方法

<routers>
    <checkout>
        <args>
            <modules>
                <Nf_Ajaxcoupon before="Mage_Checkout">Nf_Ajaxcoupon_Checkout</Nf_Ajaxcoupon>
            </modules>
        </args>
    </checkout>
</routers>

您还确定您的配置文件不需要用于 Nf_Ajaxcoupon 而不是 Nf_All

<?xml version="1.0"?>
<config>
    <modules>
        <Nf_Ajaxcoupon>
            <active>true</active>
            <codePool>local</codePool>
        </Nf_Ajaxcoupon>
    </modules>
</config>
于 2012-07-25T11:34:10.590 回答