Magento:麻烦覆盖核心块

时间:2013-11-19 12:14:08

标签: magento module config core

我试图覆盖: - Mage_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract - Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options扩展了第一个

在config.xml中我有:

<config>
    <global>
       <blocks>
          ....
          <eav>
          <rewrite>        
                  <adminthml_attribute_edit_options_abstract>         
                       Mymodule_Block_Adminhtml_Attribute_Edit_Options_Abstract
                  </adminthml_attribute_edit_options_abstract>
           </rewrite>               
      </eav>
      <adminhtml>
           <rewrite>
               <catalog_product_attribute_edit_tab>
                       Mymodule_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options
               </catalog_product_attribute_edit_tab>
           </rewrite>
      </adminhtml>
       </blocks>
       ....
    </global>
</config>

然后在:code / local / Mymodule / Adminhtml / Block / Catalog / Product / Attribute / Edit / Tab / Options.php:

class Mymodule_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options 
       extends Mymodule_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract
{
}

并在: 代码/本地/ Mymodule中/ EAV /砌块/ Adminhtml /属性/编辑/选项/ Abstract.php:

abstract class Mymodule_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract 
       extends Mage_Adminhtml_Block_Widget
{
....(code)...
}

但这两个似乎没有加载。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您只能重写实例化的具体类。重写实际上将createBlock()(或getModel()helper()等)中使用的类别名映射到类名。抽象类永远不会像这样解决。

如果确实需要在那里进行更改,您有两种选择:

  1. 将课程复制到app/local/Mage并进行修改。这样,自动加载器就会优先于核心类。它必须是具有相同类名的完整副本。请注意,这被视为不良做法并降低了可维护性,但在像您这样的情况下可能是不可避免的
  2. 重写从此扩展的所有具体类