Магенто - переписати ієрархію - magento

Що таке конфіг, необхідний для перезапису класу, який вже переписує інший клас у 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>