4

コアキャッシュモデルを書き直す必要があります。そして、これは機能しません。この問題を解決するための最初の試みは、別のモデルで書き換えを試みることでした... config.xmlで、次のように宣言しました

<global>         
  <models>          
    <core>
      <rewrite>
        <**layout**>MyCompany_MyModule_Model_Core_Cache</**layout**>
      </rewrite>
    </core>
  </models>
  ....

そして私のクラスでは、私は建設業者で亡くなりました。

これは完璧に機能します!ですから、モデルを書き直す私の可能性は正しいものです。

しかし、xmlでlayout-nodeを使用せず、代わりにcache-nodeを使用すると、これは機能しません。

だから私の試みは次のとおりであり、これは機能していません:

<global>         
  <models>          
    <core>
      <rewrite>
        <cache>MyCompany_MyModule_Model_Core_Cache</cache>
      </rewrite>
    </core>
  </models>
  ....

今の私の質問:「cache-core-model」を書き直したりオーバーロードしたりする方法はありますか?

4

3 に答える 3

4

キャッシュは、モジュール構成(config.xml)がロードされる前に初期化されます。cache-Modelは、レジストリにモデル名をキャッシュするMage::getModelでインスタンス化されました。したがって、後でカスタムキャッシュモデルを取得しようとすると、すべて失敗します。

解決策:この書き換えステートメントをetc/local.xmlに配置します。local.xmlはモジュールに依存しないものだけを保持する必要があるため、これは少し汚いです。ただし、これはコアファイルをローカルにコピーするよりも優れています。

于 2012-07-05T09:55:35.130 に答える
3

私は同じ質問をしましたが、私の解決策はあなたの解決策とは少し異なります;-)

Magentoは、/ app / etc / *。xmlからXMLファイルをロードします(このファイルはキャッシュされません)。だから私はここに自分のファイル「cache.xml」を作成しました、そして内容は

<?xml version="1.0"?>
<config>
    <global>
        <models>          
            <core>
                <rewrite>
                    <cache>MyCompany_MyModule_Model_Core_Cache</cache>
                </rewrite>
            </core>
        </models>
    </global>
</config>

1.6、1.7、1.8で完璧に動作します

于 2013-11-12T21:21:31.573 に答える
2

私も同じことをしようとしていますが、それは不可能だと思います。getGroupedClassName(app / code / core / Mage / Core / Model / Config.php)メソッドで$ this-> _ xml-> group-> modelsをvar_dumpアウトすると、リライトがまだ利用できないことに気付くでしょう。スキップされた理由。

translateまたはlayout:your_class_modelを上書きしようとすると、$ this-> _ xml ...が最初のコアクラスを(リライトなしで)ダンプし、コア/キャッシュをはるかに超えた行にリライトが表示されます。 。したがって、おそらくオーバーライドされていますが、クラスはすでにインスタンス化され、設定され、使用されています。ですから、実際には何も発射されません。

したがって、コア/キャッシュをオーバーライドすることは不可能だと思います。app / code/localに移動する必要があります。ピティ。

于 2012-05-10T00:46:39.907 に答える