2013-06-19 69 views
1

我的公司正在爲Magento製作一個模塊以適應巴西業務規則的需求。Magento模型重寫的最佳實踐是什麼?

有時我們需要重寫核心模型以添加funcionality,有時需要重寫核心模型以更改某些功能。我們懷疑這是做這種改變的最佳做法。例如,當一個模塊需要修改其他模型所擁有的某些行爲時。

我們知道修改後的文件需要在「local/mycompany/modules ...」下創建,但我們遇到了一個我將在下面描述的問題。

一個簡單的例子是:我們的客戶模型需要添加帶有'99999-999'掩碼的郵政編碼,在最後三個字符之前加上' - '。沒關係,它已經完成並且工作。但是當我們需要使用這個郵政編碼進行計算時,我們需要刪除' - '字符。這是在我們rewrited 「航運/費率/ Request.php」模型。

這是我們懷疑的一點。哪個最好?

做內新「送貨」模塊這個改寫「本地/ myCompany中/運輸/型號/價格/ Request.php」或做「客戶」模塊的目錄結構這裏面重寫?

我們對我們需要決定的結構感到困惑。

重要的是,我們不會分發或銷售作爲分離模塊重新編寫的模塊。

我會在這裏把一些代碼:

的郵政編碼爲我們的「客戶」模塊接收,在輸入掩碼,通過使用Javascript完成。 此「客戶」模塊爲客戶數據庫添加更多字段。

在這裏,我重寫「運輸/價格/ Request.php」, 「客戶」 模塊內:

中的 「客戶」 config.xml中

模塊:

<shipping> 
    <rewrite> 
    <rate_request>Mycompany_Customer_Model_Shipping_Rate_Request</rate_request> 
    </rewrite> 
</shipping> 

然後文件「Mycompany/Customer/Model/Shipping/Rate/Request.php」包含從郵編中刪除' - '字符的代碼。

我們的疑問是:在某些情況下,我們需要重新修改「Shipping/Rate/Request.php」來修改其他方法。哪個最好?

  1. 每個重寫都是在模塊內部完成的?創建同一類的重複文件。
  2. 在「Mycompany」命名空間中使用與Magento核心相同的目錄結構,並在每個類的一個文件中修改我們需要的所有內容?像Magento的核心?

我不知道我是否可以解釋我需要什麼。

謝謝!

+1

請添加一些代碼示例和分裂你的文本,以使其更具可讀性。這樣你會得到更多的答案。 – jokklan

回答

0

最好將模塊的內容保存在模塊文件夾中。

如果您所說的擴展是模塊功能的一部分,則應將它們放在該模塊的文件夾中。路徑然後是本地/ mycompany/Mymodule/Model/Shipping/Rate/Request.php。

我會在dir結構中創建這個額外的級別,以使重寫的Request.php來自Shipping模塊,但這絕對不是必需的。

這是一個很好的做法,當然是模塊化。您將能夠更加容易地添加,刪除和版本包含在一個文件夾中的模塊。考慮應用程序/ etc/modules中的模塊xml文件以及模塊目錄中的配置文件。它們描述了模塊目錄中的內容,而不是屬於它的所有重寫,但都位於不同的模塊文件夾中。

此外,如果您已從多個模塊擴展或重寫相同的模型,並且您決定刪除或完全重寫自己的模塊,那麼如果散佈的文件或文件部分分散,您如何知道文件或文件的哪些部分屬於它圍繞應用程序目錄。

有關如何創建Magento的模塊的詳細視圖也請看看http://www.magentocommerce.com/magento-connect/create_your_extension/