我尝试使用以下代码覆盖 Mage_Payment_Block_Form_Container 类:
<blocks>
<module>
<class>NS_Module_Block</class>
</module>
<payment>
<rewrite>
<form_container>NS_Module_Block_Payment_Form_Container</form_container>
</rewrite>
</payment>
</blocks>
然后在app / code / community / NS / Module / Block / Payment / Form / Container.php中我只写下这段代码:
class NS_Module_Block_Payment_Form_Container extends Mage_Payment_Block_Form_Container {
public function getMethods() {
echo 'hi';die;
}
}
然后我访问onepage checkout,但这段代码永远不会被执行。我的代码有问题吗?
答案 0 :(得分:2)
如果您希望修改one-page checkout form
,则必须覆盖正确的块,因为instance
的{{1}}未被直接调用,因此不会被直接重写覆盖。
需要重写的类是Mage_Payment_Block_Form_Container
,因为它最终扩展Mage_Checkout_Block_Onepage_Payment_Methods
并且是实际被调用的类。所以你的重写需要阅读:
您的Mage_Payment_Block_Form_Container
文件应包含
config.cml
并将您的类声明为:
<global>
<blocks>
<checkout>
<rewrite>
<onepage_payment_methods>MyCompany_Checkout_Block_Onepage_Payment_Methods</onepage_payment_methods>
</rewrite>
</checkout>
</blocks>
</global>
如果您有任何疑问,请告诉我