2012-01-12 2 views
0

Когда я пытаюсь перезаписать модель из Mage_Catalog (например, Mage_Catalog_Model_Product_Image), у меня нет проблем, но когда я пытаюсь сделать это для модели из Mage_Core (Mage_Core_Model_File_Uploader), она не работает.Magento Overwrite Model от Mage_Core

Есть ли какая-то защита на Mage_Core? Вместо этого я не могу использовать наблюдателя, поэтому мне действительно нужно получить эту работу.

Мой config.xml:

<models> 
    <myshop> 
     <class>Adrien_Myshop_Model</class> 
    </myshop> 
    <core> 
     <rewrite> 
      <file_uploader>Adrien_Myshop_Model_Core_File_Uploader</file_uploader> 
     </rewrite> 
    </core> 
    <catalog> 
     <rewrite> 
      <product_image>Adrien_Myshop_Model_Catalog_Product_Image</product_image> 
     </rewrite> 
    </catalog> 
</models> 

Мой новый загрузчик модель:

class Adrien_Myshop_Model_Core_File_Uploader extends Mage_Core_Model_File_Uploader 
{ 
    protected function _moveFile($tmpPath, $destPath) 
    { 
     Mage::log("custom upload"); 
     return parent::_moveFile($tmpPath, $destPath); 
    } 

} 

Я положил журнал отладки в Mage_Core_Model_File_Uploader :: _ MoveFile, а также, когда я бегу сценарий я получаю только войдите в Mage_Core_Model_File_Uploader.

Однако, когда я тестирую его с помощью Catalog_Product_Image, я правильно получаю оба журнала отладки.

Благодарим за помощь!

ответ

3

Если вы grep исходный код для этого имени класса, вы можете увидеть, что он вызывается непосредственно на PHP через new, следовательно, невозможность переписать.

Если вы должны переписать этот класс, вам нужно будет сделать это путем копирования на локальный codepool и сделать в нем изменения, отметив, что вам нужно объединить в новых изменениях в обновлении приложения.