首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >magento为什么在wishlist中的模型资源声明中使用deprecatedNode标记

magento为什么在wishlist中的模型资源声明中使用deprecatedNode标记
EN

Stack Overflow用户
提问于 2014-02-14 11:58:23
回答 1查看 298关注 0票数 1

我在config.xml的模型配置中看到了一件有趣的事情。我是未知的标签

代码语言:javascript
复制
<deprecatedNode>

在模型类declaration.In中,一个自定义扩展,我们只需要这种类型的模型类解密.

代码语言:javascript
复制
 <models>
            <[module]>
                <class>[Namespace]_[Module]_Model</class>
                <resourceModel>[module]_mysql4</resourceModel>
            </[module]>
            <[module]_mysql4>
                <class>[Namespace]_[Module]_Model_Mysql4</class>
                <entities>
                    <[module]>
                        <table>[module]</table>
                    </[module]>
                </entities>
            </[module]_mysql4>
        </models>

参考-table

deprecatedNodeBut in magento existing modules like Wishlist的config.xml定义模型,resourceModel用该模式声明的.

代码语言:javascript
复制
<wishlist>
                <class>Mage_Wishlist_Model</class>
                <resourceModel>wishlist_resource</resourceModel>
            </wishlist>

            <wishlist_resource>

                <class>Mage_Wishlist_Model_Resource</class>
                <deprecatedNode>wishlist_mysql4</deprecatedNode>
                <entities>
                    <wishlist>
                        <table>wishlist</table>
                    </wishlist>
                    <item>
                        <table>wishlist_item</table>
                    </item>
                    <item>
                        <table>wishlist_item</table>
                    </item>
                    <item_option><table>wishlist_item_option</table></item_option>
                </entities>
            </wishlist_resource>

为什么在MAGENTO中使用这种类型的代码

代码语言:javascript
复制
<resourceModel>wishlist_resource</resourceModel>
      <wishlist_resource>

Mage_Wishlist_Model_Resource wishlist_mysql4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 12:46:30

在Magento1.6版本中,资源模型是从节点<..._resource>中提取的。<deprecatedNode>与旧扩展保持向后兼容,而旧扩展仍然使用<..._mysql4>节点作为资源模型。

从文件中可以看到:app/code/core/Mage/Core/Model/Config.php第1230行(对于MagentoVersion1.7.0):

代码语言:javascript
复制
// First - check maybe the entity class was rewritten
    $className = null;
    if (isset($config->rewrite->$class)) {
        $className = (string)$config->rewrite->$class;
    } else {
        /**
         * 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.
         */
        if ($config->deprecatedNode) {
            $deprecatedNode = $config->deprecatedNode;
            $configOld = $this->_xml->global->{$groupType.'s'}->$deprecatedNode;
            if (isset($configOld->rewrite->$class)) {
                $className = (string) $configOld->rewrite->$class;
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21778803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档