Magento - 当地的cartcontroller无法正常工作

时间:2012-07-25 10:37:00

标签: magento

我正在尝试覆盖Magento中的函数couponPostAction,它位于cartcontroller中。

我创建了一个新的本地模块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');


    }
  }

?>

我无法理解为什么它没有调用本地控制器,当我进入system-&gt; configuration-&gt; advanced我看到它已启用。

为什么它无法正常工作或调试方法?

由于

1 个答案:

答案 0 :(得分: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>