我必须重写 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::getGroupedClassNameMage_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* 一。重写的示例 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 shell类,以避免强迫现有代码更新所有内容的扩展,以继续工作。

许可以下: CC-BY-SA归因
scroll top