0

删除类别时,我需要运行一些 SQL 来清除 Magento 中的一些自定义表。考虑到这一点,我一直在关注此处列出的示例:Magento - 覆盖核心文件

我已将其输入到我的 config.xml 中:

<global>
    <models>
        <catalog>
            <rewrite>
                <category_api>MyCompany_MyModule_Model_Catalog_Category_Apis</category_api>
            </rewrite>
        </catalog>                      
    </models>
</global>

然后我创建了文件结构:

MyCompany
-> MyModule
  -> Model
    ->Catalog
      ->Category
        ->Api.php

在 Api.php 文件中,我有以下内容:

class MyCompany_MyModule_Model_Catalog_Category_Api extends Mage_Catalog_Model_Category_Api
{
    public function delete($categoryId)
    {
        Mage::log('I have overidden deletion of: ' . $categoryId);

        return true;
    }

}

使用此设置时,system.log 中没有任何内容,所以我认为我做错了什么。

编辑

将我的 XML 更改为<category> </category>似乎使它包含我的文件,因为我现在收到一个错误:

Fatal error: Call to a member function setStoreId() on a non-object in C:\xampp\htdocs\magento\app\code\core\Mage\Adminhtml\controllers\Catalog\CategoryController.php on line 52

覆盖课程时我需要做一些特别的事情吗?

4

1 回答 1

3

创建一个观察者来捕捉事件不是更好吗catalog_category_delete_after?使用事件优于功能覆盖,并且更灵活。由于您的删除过程不会更改 catalog_category 删除但会为其添加更多功能,因此使用事件似乎是更好的选择

于 2013-01-24T11:02:45.357 回答