我的自定义模块中出现以下错误:
致命错误:在非对象中调用成员函数setData() /opt/lampp/htdocs/magento/app/code/local/Phparrow/Hello/controllers/IndexController.php
我的代码如下 -
<global>
<blocks>
<hello>
<class>Phparrow_Hello_Block</class>
</hello>
</blocks>
<helpers>
<hello>
<class>Phparrow_Hello_Helper</class>
</hello>
</helpers>
<models>
<hello>
<class>Phparrow_Hello_Model</class>
<resourceModel>hello_mysql4</resourceModel>
</hello>
<hello_mysql4>
<class>Phparrow_Hello_Model_Mysql4</class>
<entities>
<hello>
<table>hello</table>
</hello>
</entities>
</hello_mysql4>
</models>
<resources>
<hello_setup>
<setup>
<module>Phparrow_Hello</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</hello_setup>
<hello_write>
<connection>
<use>core_write</use>
</connection>
</hello_write>
<hello_read>
<connection>
<use>core_read</use>
</connection>
</hello_read>
</resources>
</global>
<?php
class Phparrow_Hello_Model_Hello extends Mage_Core_Model_Abstract
{
public function _construct(){
print 'test';
$this->_init('hello/hello');
print 'test1';
}
}
<?php
class Phparrow_Hello_Model_Mysql4_Hello extends Mage_Core_Model_Mysql4_Abstract
public function _construct()
{
$this->_init('hello/hello', 'hello_id');
}
}
<?php
class Phparrow_Hello_Model_Mysql4_Hello_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct(){
$this->_init('hello/hello');
}
}
class Phparrow_Hello_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$model1= Mage::getModel('hello/hello');
echo get_class($model1);
$model1->setData('name'->'Harsh','contact'->'8445895621');
$model1->save();
}
}
我有一个hello表有三个字段:
hello_id,姓名,联系方式
为什么在Windows中成功执行时,这在Linux中不起作用?
答案 0 :(得分:0)
我非常确定这与您的路径或文件命名有关,请确保文件和文件夹在此处输入时名称完全。
Windows并不关心,当自动装带器试图找到模型时,可能会提供HelLo.php或hELLO.php文件。
答案 1 :(得分:0)
这是在模型中保存数据的正确方法。您需要创建一组数据并传入setData()
class Phparrow_Hello_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$model1= Mage::getModel('hello/hello');
$data = array('name'=>'Harsh','contact'=>'8445895621');
$model1->setData($data);
$model1->save();
}
}