我正在尝试在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>
我不知道自己弄错了什么。如果你知道,请告诉我。提前谢谢。
答案 0 :(得分:0)
请参阅资源模型定义
<?php
protected function _getResource()
{
if (empty($this->_resourceName)) {
Mage::throwException(Mage::helper('core')->__('Resource is not set.'));
}
return Mage::getResourceSingleton($this->_resourceName);
}
因此,当$_resourceName
类Mage_Core_Model_Abstract
未设置或为空时,它会抛出异常。所以在调用_getResource()
方法之前,只需设置该变量即可。那是
$this->_resourceName = 'modulename/filename';
$this->_getResource()->functionname();
你也可以使用它。
$this->_setResourceModel('modulename/filename');
return $this->_getResource()->functionname();
希望它有所帮助。