资源功能 - magento

时间:2014-07-07 09:50:06

标签: magento

我正在尝试在magento中创建新的扩展程序。我为扩展创建了自定义表。我想从自定义表中选择值。为此我尝试了以下。

在我们的Company_name / Module_name / Model / file.php中,我使用以下代码调用Resource函数。

return Mage::getResourceModel('Modulename/filename')->functionName();

它在我们的项目中运作良好

但如果我使用以下代码段,

return $this->_getResource()->functionname();

返回以下错误

a:5:{i:0;s:20:"Resource is not set.";i:1;s:3048:"#0 /var/www/magento/app/code/core/Mage/Core/Model/Abstract.php(136): Mage::throwException('Resource is not...')

我还通过将以下代码添加到模块/ etc / config.xml

来配置我们的资源类
<models>
    <modulename>
        <class>Companyname_Modulename_Model_Filename</class>
        <resourceModel>modulename_resource</resourceModel>
    </modulename>
    <modulename_resource>
        <class>Companyname_Modulename_Model_Resource</class>
    </modulename_resource>
</models>

我不知道自己弄错了什么。如果你知道,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

请参阅资源模型定义

<?php
protected function _getResource()
{
    if (empty($this->_resourceName)) {
        Mage::throwException(Mage::helper('core')->__('Resource is not set.'));
    }

    return Mage::getResourceSingleton($this->_resourceName);
}

因此,当$_resourceNameMage_Core_Model_Abstract未设置或为空时,它会抛出异常。所以在调用_getResource()方法之前,只需设置该变量即可。那是

  $this->_resourceName = 'modulename/filename';
  $this->_getResource()->functionname();

你也可以使用它。

  $this->_setResourceModel('modulename/filename');
  return $this->_getResource()->functionname();

希望它有所帮助。