सबसे पहले ओवरराइड नहीं कर सकता है, मैं यहां एक और "Magento कोर ओवरराइड" प्रश्न पूछने के लिए क्षमा चाहता हूं, लेकिन मैंने लगभग 10 ट्यूटोरियल का पालन किया और यहां पोस्ट किए गए लगभग सभी समान प्रश्नों को पढ़ा, कोई सफलता नहीं।Magento कोर मॉडल
मुझे कोर मॉडल और कक्षाओं का एक गुच्छा ओवरराइड करना है। कोड काम करता है, क्योंकि मैंने कोर को पहले से ही बदल दिया है (एक परीक्षण Magento साइट में) और यह सही काम किया। लेकिन हर अब और फिर एक Magento अद्यतन उपलब्ध है और यदि हम अपडेट लागू करेंगे तो मेरे सभी परिवर्तन खो जाएंगे। तो मुझे इसके बजाय बेस कोड ओवरराइड करना होगा। मैं अपने सभी मॉड्यूल को सभी आवश्यक कोड में डालना चाहता हूं, क्योंकि मुझे केवल प्रत्येक कक्षा में 1 या 2 कार्यों को ओवरराइड करना है, बाकी को 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 मेरे कस्टम मॉडल को पाता है। मैंने बैकएंड में जाकर जांच की और सिस्टम-> कॉन्फ़िगरेशन-> उन्नत
मैंने पूरी तरह से कैश साफ़ कर दिया, तो ऐसा नहीं है। (('बिक्री/order_pdf_invoice') दाना :: getModel)get_class, इस रिटर्न Mage_Sales_Model_Order_Pdf_Invoice
मैं मैं कहाँ बनाया पता नहीं है:
मैं निर्धारित करने के लिए क्या मॉडल नियंत्रक में दिया जाता है get_class इस्तेमाल किया एक गलती लेकिन मुझे यकीन है कि मैंने एक बनाया है :(
व्हाईट स्पेस क्यों? ' xml संस्करण =" 1.0 "?>' – Zyava
मैंने उदाहरणों से एक्सएमएल संरचना की प्रतिलिपि बनाई और इसे मेरे कस्टम मॉड्यूल के अनुसार बदल दिया। मुझे नहीं लगता कि सफेद जगह जरूरी है, लेकिन यह भी इस तरह से काम करता है। – itd