Що таке конфіг, необхідний для перезапису класу, який вже переписує інший клас у magento?
Наприклад, модуль спільноти виконує такі дії:
<models>
<modulea>
<adminhtml>
<rewrite>
<session>CompanyA_ModuleA_Model_Adminhtml_Session</session>
</rewrite>
</adminhtml>
</modulea>
</models>
Я хочу переписати модуль спільноти, і я намагаюся створити такий код, який не працює:
<models>
<moduleb>
<class>CompanyB_ModuleB_Model</class>
</moduleb>
<modulea>
<rewrite>
<adminhtml_session>CompanyB_ModuleB_Model_Adminhtml_Session</adminhtml_session>
</rewrite>
</modulea>
</models>
Що з цим не так
Відповіді:
1 для відповіді № 1Будьте обережні у вашому синтаксисі перезапису XML, у вас є помилка. Потрібно:
<modulea>
<adminhtml>
<rewrite>
<adminhtml_session>CompanyA_ModuleA_Model_Adminhtml_Session</session>
</rewrite>
</adminhtml>
</modulea>
і
<moduleb>
<adminhtml>
<rewrite>
<adminhtml_session>CompanyB_ModuleB_Model_Adminhtml_Session</session>
</rewrite>
</adminhtml>
</moduleb>
Далі вам потрібно розширити клас хорошого PHP у належному порядку. Наприклад, якщо ви хочете, щоб компанія CompanyA розширювала / переписувала компаніюB:
Файл CompanyA:
class CompanyA_ModuleA_Model_Adminhtml_Session extends Mage_Adminhtml_Model_Session {
Файловий файл моделі компаніїB:
class CompanyB_ModuleB_Model_Adminhtml_Session extends CompanyA_ModuleA_Model_Adminhtml_Session {
Останнє, щоб бути впевненим, що переписати зроблено в хорошому порядку (при виконанні a Mage::getModel("adminhtml/session")
ви хочете отримати клас CompanyB, а не COmpanyA), вам потрібно визначити, який модуль залежить від якого. app/etc/modules/Company_Module.xml
файл
додати для компанії A:
<depends>
<Mage_Adminhtml />
</depends>
додати для компанії B:
<depends>
<CompanyA_ModuleA />
</depends>