Модель перезаписи Magento от Mage_Core - PullRequest
1 голос
/ 12 января 2012

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

Есть ли какая-нибудь защита на 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, я правильно получаю оба журнала отладки.

Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 12 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...