如何覆盖Magento控制器


How can I override a Magento controller?

我需要用服务器端代码检查结账/购物车页面上优惠券代码的有效性。

Magento已经在船上进行了类似的检查。然而,我需要添加一个来查看用户是否已连接:在Magento中扩展/覆盖该操作的最佳方式是什么?

我知道我可以将控制器PHP文件复制到/app/code/local/文件夹树中,但我想知道是否有更好的方法

在我看来,除了修改core之外的任何事情都是好的。使用config.xml创建一个带有控制器目录等的简单模块:

<config>
    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                         <My_Module before="Mage_Checkout">My_Module_Checkout</My_Module>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

有关如何扩展前端控制器的更多详细信息,请参阅此处:http://prattski.com/2010/06/24/magento-overriding-core-files-blocks-models-resources-controllers/