リソースモデルを書き換えるときに非推奨の「mysql4」クラスを処理する方法
-
16-10-2019 - |
質問
私は書き直さなければなりません Mage_Catalog_Model_Resource_Category_Flat
.
古いリソースクラス Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Flat
後方互換性のためにまだMagento 1.7にあり、新しいものを拡張しています。
完全なモデルエイリアスのコードベースでの検索 resource_eav_mysql4_category_flat
結果が得られませんでした。しかし config.xml
mage_catalogのこの行には次の行が含まれています。
<deprecatedNode>catalog_resource_eav_mysql4</deprecatedNode>
そして、私はどこでどのようにわかりません deprecatedNode
使用されている。
そのようなリソースモデルを書き換えるとき、どのような困難が期待するのがありますか?両方のクラスを書き直す必要がありますか?または、MySQL4クラスを安全に無視できますか?
解決
Magento 1.6+でのプロジェクトビルドのためだけに機能するはずの個人用の拡張機能を開発する場合、心配はありません。オーバーライドするだけです Mage_Catalog_Model_Resource_Category_Flat
これをに追加することにより config.xml
拡張機能のファイル:
<models>
<catalog_resource>
<rewrite>
<category_flat>Namespace_Module_Model_Resource_Category_Flat</category_flat>
</rewrite>
</catalog_resource>
</models>
拡張機能を構築していて、1.6より前にバージョンで動作したい場合は、 Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Flat
クラスも。この場合、あなた config.xml
セクションは次のようになります:
<models>
<catalog_resource><!--used for 1.6+ -->
<rewrite>
<category_flat>Namespace_Module_Model_Resource_Category_Flat</category_flat>
</rewrite>
</catalog_resource>
<catalog_resource_eav_mysql4><!-- used for versions before 1.6 -->
<rewrite>
<category_flat>Namespace_Module_Model_Resource_Eav_Mysql4_Category_Flat</category_flat>
</rewrite>
</catalog_resource_eav_mysql4>
</models>
すべてのロジックを入力する必要があります Namespace_Module_Model_Resource_Category_Flat
1.6以前のバージョンのクラスは次のようになります。
class Namespace_Module_Model_Resource_Eav_Mysql4_Category_Flat extends Namespace_Module_Model_Resource_Category_Flat
{
}
これにより、両方のバージョンが同じコードを使用します。
他のヒント
deprecatedNode
Magentoによって使用されています mysql4*
リソースモデルの場合 resource*
見つかりませんでした。からのコメントを参照してください Mage_Core_Model_Config::getGroupedClassName
と Mage_Core_Model_Resource::getEntity
:
/** * Backwards compatibility for pre-MMDB extensions. * In MMDB release resource nodes <..._mysql4> were renamed to <..._resource>. So <deprecatedNode> is left * to keep name of previously used nodes, that still may be used by non-updated extensions. */
もしあれば resource*
モデルあなたはそれを書き直す必要があります、そうでなければ書き換えます mysql4*
1。書き換えの例 mysql4*
リソースモデル:
<config>
<global>
<models>
<review_mysql4>
<rewrite>
<review_collection>AW_AdvancedReviews_Model_Mysql4_Review_Collection</review_collection>
<review>AW_AdvancedReviews_Model_Mysql4_Review</review>
</rewrite>
</review_mysql4>
</models>
</global>
</config>
mysql4*
クラスは、すでに拡張された既存の実装の後方互換性のためにのみ存在します。 IEシェルクラスは、既存のコードを強制して、すべての拡張機能を更新して、動作を継続することを避けます。