首先,我爲此要求另一個「magento核心覆蓋」問題表示歉意,但是我跟隨了大約10個教程,並通讀了幾乎所有類似的問題,但都沒有成功。我不得不重寫一堆核心模型和類。代碼的作品,因爲我已經改變了核心(在一個測試magento網站),它的工作完美。但是每隔一段時間都會有一個magento更新,如果我們應用更新,則所有更改都將丟失。 所以我必須改寫基本代碼。 我想讓自己的模塊放入所有必需的代碼,因爲我只需要在每個類中重寫1或2個函數,其餘的應該像Magento預期的那樣工作。magento無法覆蓋核心模型
我的第一次嘗試是重寫Mage_Sales_Model_Order_Pdf_Invoice類。 好吧,所以我做了我的模塊。文件結構是:
應用程序/代碼/本地/ [命名空間] /Sales/etc/config.xml
應用程序/代碼/本地/ [命名空間] /Sales/Helper/Data.php (這個類並沒有做任何事情,它只是一個空的類。我做到了,因爲我讀的地方,Magento的,有時如果沒有輔助類,不能識別模塊)
應用程序/代碼/本地/[namespace]/Sales/Model/Order/Pdf/Invoice.php
應用的/ etc /模塊/ [命名空間] _Sales.xml
的[名稱空間] _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(法師:: getModel( '銷售/ order_pdf_invoice')),這將返回Mage_Sales_Model_Order_Pdf_Invoice
我不知道我在哪裏做一個錯誤,但我相信我做了一個:(
爲什麼在這裏留空? '<?xml version =「1.0」?>' – Zyava
我將xml結構複製出示例,並相應地將其更改爲我的自定義模塊。我不認爲白色空間是必要的,但它也適用於這種方式。 – itd