在Windows中成功创建的Magento模型对象会在Linux中引发错误

时间:2015-07-27 09:27:04

标签: php magento

我的自定义模块中出现以下错误:

  

致命错误:在非对象中调用成员函数setData()   /opt/lampp/htdocs/magento/app/code/local/Phparrow/Hello/controllers/IndexController.php

我的代码如下 -

的config.xml

<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> 

的magento \应用\代码\本地\ Phparrow \你好\模型\ Hello.php

<?php
class Phparrow_Hello_Model_Hello extends Mage_Core_Model_Abstract
{
    public function _construct(){
        print 'test';
       $this->_init('hello/hello');
    print 'test1';
    }
}

的magento \应用\代码\本地\ Phparrow \你好\模型\ mysql4 \ Hello.php

<?php
class Phparrow_Hello_Model_Mysql4_Hello extends Mage_Core_Model_Mysql4_Abstract
    public function _construct()
    {
        $this->_init('hello/hello', 'hello_id');
    }
}

的magento \应用\代码\本地\ Phparrow \你好\模型\ mysql4 \你好\ Collection.php

<?php
class Phparrow_Hello_Model_Mysql4_Hello_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    public function _construct(){
        $this->_init('hello/hello');
    }
}

的magento \应用\代码\本地\ Phparrow \你好\控制器\ IndexController.php

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中不起作用?

2 个答案:

答案 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();
    }
}