1

すでに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>

これの何が問題なのですか

4

1 に答える 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>

次に、適切な順序で Good PHP クラスを拡張する必要があります。たとえば、 CompanyA が CompanyB を拡張/書き換える場合:

CompanyA ファイル :

class CompanyA_ModuleA_Model_Adminhtml_Session extends Mage_Adminhtml_Model_Session {

CompanyB モデルの php ファイル:

class CompanyB_ModuleB_Model_Adminhtml_Session extends CompanyA_ModuleA_Model_Adminhtml_Session {

最後に、書き直しが適切な順序で行われたことを確認するために ( Mage::getModel('adminhtml/session')COMpanyA クラスではなく CompanyB クラスを取得する場合)、どのモジュールがどのモジュールに依存するかを定義する必要があります。ファイルでそれを行いapp/etc/modules/Company_Module.xmlます。

会社 A に追加:

<depends>
    <Mage_Adminhtml />
</depends>

会社 B に追加:

<depends>
    <CompanyA_ModuleA />
</depends>
于 2012-11-21T20:49:55.777 に答える