重写Magento的Controller控制器

重写Magento的Controller控制器
重写Magento的Controller控制器

今天来看下如何重写Magento的Controller(控制器),重写magento的控制器目的就是控制其action动作,以此来改变现有的Magento行为。

重写Magento的checkout控制器的cart动作,即www……..com/checkout/cart/  这个url处理的过程。

本例使用Magento 1.5版本,其它版本可能稍有不同。不是稍有不同,可能是大不同,网上教程看的时候注意版本。

1.首先我们按照正常的步骤来简单的新建一个插件,可以使用 Magento模块快速生成插件

2.在我们的config.xml文件中声明下我们要重写的Controller(控制器),代码如下

<frontend>
	<routers>
		<guestmaxorder>
			<use>standard</use>
			<args>
				<module>Hellokeykey_Guestmaxorder</module>
				<frontName>guestmaxorder</frontName>
			</args>
		</guestmaxorder>
		<checkout>
			<args>
				<module before="Mage_Checkout">Hellokeykey_Guestmaxorder_Checkout</module>
			</args>
		</checkout>
	</routers>
	<layout>
		<updates>
			<guestmaxorder>
				<file>guestmaxorder.xml</file>
			</guestmaxorder>
		</updates>
	</layout>
</frontend>

注意 <checkout>部分为我们加入的内容。

3.由于第三步的声明<module before=”Mage_Checkout”>Hellokeykey_Guestmaxorder_Checkout</module>,我们需要在我们插件的控制器文件夹新建Checkout文件夹,在此文件夹中新建CartController.php文件,CartController.php文件的内容如下

require_once 'Mage/Checkout/controllers/CartController.php';
class Hellokeykey_Guestmaxorder_Checkout_CartController extends Mage_Checkout_CartController
{
	public function someAction()
    {
        //在这里做点事情吧
    }

}

那么我们就完成了对此控制器的重写,在里面重写其action就可以了。

4.注意刷新Magento的缓存

参考文章:

http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller

http://www.dhmedia.com.au/blog/how-do-i-override-controller-actions-magento-14

http://www.spinonesolutions.com/2010/03/magento-controller-override/

转载表明出处:www.hellokeykey.com

《重写Magento的Controller控制器》有一个想法

评论已关闭。