很奇怪,付款表格容器类不能被覆盖

时间:2013-11-14 01:19:57

标签: magento

我尝试使用以下代码覆盖 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,但这段代码永远不会被执行。我的代码有问题吗?

1 个答案:

答案 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>

如果您有任何疑问,请告诉我