如何覆盖magento核心模型(模型类文件直接在app/code/core/Mage/Core/Model目录下)

问题描述 投票:0回答:2

我想重写核心模型类,但我找不到正确的方法。

我已经用谷歌搜索了很多,但是一些示例显示了如何覆盖不在

app/code/core/Mage/Core/Model
文件夹中的模型,并且一些示例显示了如何覆盖位于
Core
子目录中的模型目录,如
app/code/core/Mage/Core/Model/Resources/Eav/Mysql4/

我已阅读示例,但我仍然找不到覆盖它的方法。例如,我想覆盖

app/code/core/Mage/Core/Model/Store.php

这是我使用的 xml,但它不起作用。请帮我找出哪个部分是错误的。预先感谢!

app/etc/models/My_Core

<config>
    <modules>
        <My_Core>
            <active>true</active>
            <codePool>local</codePool>
        </My_Core>
    </modules>
</config>

app/code/local/My/Core/etc/config.xml

<config>
    <modules>
        <My_Core>
            <version>0.1.0</version>
        </My_Core>
    </modules>
    <global>
        <models>
            <my_core_store>
                <rewrite>
                    <class>My_Core_Model_Store</class>
                </rewrite>
            </my_core_store>
        </models>
    </global>
</config>

新的 Store.php 文件位于

app/code/local/My/Core/Model/Store.php
。 magento版本是1.8.1.0

php magento model overriding
2个回答
6
投票

您的 config.xml 有一些错误。就这样跟着去吧..

< ?xml version="1.0"?>
<config>
    <modules>
        <my_core>
            <version>0.1.0</version>
        </my_core>
    </modules>
    <global>
       <models>
          <core>
              <rewrite>
                  <store>My_Core_Model_Store</Store>
              </rewrite>
          </core>
       </models>
    </global>
</config>

同样在模型类中,您需要扩展父类名称。例如:

My_Core_Model_Filename extends Mage_Core_Model_Store


2
投票

对于他们中的大多数人来说

<modulename>
<rewrite><path_to_file>My_Extension_Path_To_Extended_File</path_to_file>
</modulename>

所以在你的情况下是

<core>
<rewrite><store>My_Core_Model_Store</store></rewrite>
</core>

尽管如此,请注意,对于 Mysql4 或资源文件,它们是在

modulename_mysql4
modulename_resource
下定义的。

© www.soinside.com 2019 - 2024. All rights reserved.