2013-01-24 61 views
0

當需要刪除類別時,需要運行一些SQL來清除Magento中的一些自定義表格。考慮到這一點,我一直在下面的例子中奠定了這裏:Magento - Overriding core files如何覆蓋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; 
    } 

} 

我什麼也沒有c在使用這個設置時,在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 

我需要做一些特殊的重寫類時?

回答

3

創建一個觀察者來捕捉事件catalog_category_delete_after不是更好嗎?使用事件優於功能覆蓋,而且更靈活。由於您的刪除過程不會改變catalog_category刪除,但添加更多的功能,使用事件似乎是一個更好的選擇

+0

好吧,我想知道如果我應該這樣做。你能模擬一個使用事件的例子,或者鏈接一個好的解釋嗎? – webnoob

+0

其實我在Magento的網站上看到一個很好的資源:http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/customizing_magento_using_event-observer_method – webnoob

+0

使用事件工作的一種享受,現在我已經閱讀了它們使用它們更有意義。 – webnoob