有人可以为我回答吗?

如果我在本地代码池中创建自己的法师/核心文件版本,它是否会完全覆盖法师/核心文件?还是我的代码中未重新定义的方法仍然从核心文件继承?

例子。以下文件(exception.php)包含几种方法(函数)。

~ app
->  code
  ->  core
    ->  Mage
      ->  Customer
        ->  Exception.php

我想在这里放置自己的版本:

~ app
->  code
  ->  local
    ->  Mage
      ->  Customer
        ->  Exception.php

我的版本只包含1个方法(_beforeSave())。核心文件包含许多。所有其他方法是否仍可从原始文件中使用?

希望这很清楚!谢谢。

有帮助吗?

解决方案

如果将文件放在文件夹中 local (或者 community)与某些文件相同的路径 core 核心文件将使毫无用处。
订单Magento搜索文件是 app/code/local, app/code/community, app/code/core, lib. 。如果您只想覆盖一种方法,请不复制该文件 local 文件夹。
这是一个不错的教程 这向您展示了如何正确覆盖某些东西。

其他提示

Magento中基本上有三种不同的“有效”程序逻辑修改方式

  1. 使用事件
  2. 使用类或控制器重写
  3. 通过将完整文件复制到 local 代码池,然后对其进行修改。

我建议您更喜欢1.超过2.超过2.超过3.,因为您可以正确隔离更改,并且在更新Magento版本时会引起问题。 2.(正如马里乌斯(Marius)所述,仍然比复制到本地要好,因为不风险其他扩展或更新破坏事物。

使用时 local 池,您始终必须维护完整的类代码(如果更新)。

在您的情况下,您应该检查是否可以使用事件添加您应用的代码 Mage_Customer 对象调用 customer_save_before.

许可以下: CC-BY-SA归因
scroll top