我的公司正在为 Magento 制作一个模块,以满足巴西商业规则的需求。
有时我们需要重写核心模型来增加功能,有时需要重写核心模型来改变一些功能。我们怀疑这是进行此更改的最佳实践。例如,当一个模块需要修改其他模型所拥有的某些行为时。
我们知道修改后的文件需要在“local/mycompany/modules...”下创建,但我们遇到了一个我将在下面描述的问题。
一个简单的例子是:我们的客户模型需要添加带有“99999-999”掩码的邮政编码,在最后三个字符之前添加“-”。没关系,它已经完成并且正在工作。但是当我们需要使用这个邮政编码进行计算时,我们需要删除“-”字符。这是在我们重写的“Shipping/Rate/Request.php”模型中制作的。
这就是我们怀疑的重点。哪个最好?
是在“local/mycompany/Shipping/Model/Rate/Request.php”中的新“Shipping”模块中重写还是在“Customer”模块目录结构中重写?
我们对需要决定的结构感到困惑。
重要的是我们不会分发或出售作为独立模块重写的模块。
我会在这里放一些代码:
邮政编码由我们的“客户”模块接收,输入中带有掩码,由 Javascript 完成。此“客户”模块向客户数据库添加更多字段。
在这里,我在 "Customer" 模块中重写了"Shipping/Rate/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”来修改其他方法。哪个最好?
- 每次重写都是在来自的模块内部完成的?创建同一类的重复文件。
- 在“Mycompany”命名空间中使用与 Magento 核心相同的目录结构,并在每个类的一个文件中修改我们需要的所有内容?像 Magento 的核心一样?
我不知道我是否可以解释我需要什么。
谢谢!