Прежде всего, я прошу прощения за то, что задал еще один вопрос "magento core override", но я выполнил около 10 учебных пособий и прочитал почти все подобные вопросы, опубликованные здесь, но безуспешно.
Я должен переопределитькуча базовых моделей и классов.Код работает, потому что я уже сменил ядро (на тестовом сайте magento), и он работал отлично.Но время от времени доступно обновление magento, и если мы будем применять эти обновления, все мои изменения будут потеряны.Поэтому я должен переопределить базовый код.Я хочу сделать свой собственный модуль для добавления всего необходимого кода, потому что мне нужно только переопределить 1 или 2 функции в каждом классе, остальные должны работать так, как задумал Magento.
Моя первая попытка была переопределитькласс Mage_Sales_Model_Order_Pdf_Invoice .Итак, я сделал свой модуль.Структура файла:
app / code / local / [пространство имен] /Sales/etc/config.xml
app / code / local / [namespace] /Sales/Helper/Data.php (Этот класс ничего не делает, это просто пустой класс. Я сделал это потому, что где-то читал, что Magento иногда не распознает модуль, если нет класса Helper)
app / code / local / [namespace] /Sales/Model/Order/Pdf/Invoice.php
app / etc / modules / [namespace] _Sales.xml
Файл [namespace] _Sales.xml выглядит следующим образом:
<?xml version="1.0"?>
<config>
<modules>
<[namespace]_Sales>
<active>true</active>
<codePool>local</codePool>
</[namespace]_Sales>
</modules>
</config>
Файл config.xml выглядит следующим образом:
< ?xml version="1.0"?>
<config>
<modules>
<[namespace]_Sales>
<version>0.1.0</version>
</[namespace]_Sales>
</modules>
<global>
<helpers>
<sales>
<class>[namespace]_Sales_Helper</class>
</sales>
</helpers>
<models>
<sales>
<rewrite>
<order_pdf_invoice>[namespace]_Sales_Model_Order_Pdf_Invoice</order_pdf_invoice>
</rewrite>
</sales>
</models>
</global>
</config>
И файл Invoice.php выглядит следующим образом:
<?php
/****I'm adding some different classes here*******************************/
include_once Mage::getBaseDir('lib')."/myclass.php";
include_once Mage::getBaseDir('lib')."/another_library.php";
/********************************************************/
class [namespace]_Sales_Model_Order_Pdf_Invoice extends Mage_Sales_Model_Order_Pdf_Invoice
{
public function getPdf($invoices = array())
{
//my code
}
}
Я хотел сначала проверить это, прежде чем перейти и переопределить все остальные контроллеры и модели, которые мне нужно изменить.
Проблема в том, что он все еще использует оригинальную модель.
Я думаю, что код модуля и пути верны, потому что magento находит мою пользовательскую модель.Я проверил, зайдя в бэкэнд и посмотрел на Система-> Конфигурация-> Дополнительно
Я полностью очистил кеш, так что это не так.
Я использовал get_class дляопределить, какая модель возвращается в контроллере: get_class (Mage :: getModel ('sales / order_pdf_invoice')) , это возвращает Mage_Sales_Model_Order_Pdf_Invoice
Я не знаю, гдеЯ сделал ошибку, но я уверен, что я сделал одну: (