我在config.xml的模型配置中看到了一件有趣的事情。我是未知的标签
<deprecatedNode>在模型类declaration.In中,一个自定义扩展,我们只需要这种类型的模型类解密.
<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
deprecatedNode的But in magento existing modules like Wishlist的config.xml定义模型,resourceModel用该模式声明的.
<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中使用这种类型的代码
<resourceModel>wishlist_resource</resourceModel>
<wishlist_resource>Mage_Wishlist_Model_Resource wishlist_mysql4
发布于 2014-02-14 12:46:30
在Magento1.6版本中,资源模型是从节点<..._resource>中提取的。<deprecatedNode>与旧扩展保持向后兼容,而旧扩展仍然使用<..._mysql4>节点作为资源模型。
从文件中可以看到:app/code/core/Mage/Core/Model/Config.php第1230行(对于MagentoVersion1.7.0):
// 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;
}
}
}https://stackoverflow.com/questions/21778803
复制相似问题