2011-07-19 84 views
3

我正在關注本教程 http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-5-magento-models-and-orm-basicsMagento模型不工作

按照本教程,當我傳遞值與像URL(HTTP://本地主機的/ dev /博客/索引/ testModel/ID/1),我正在錯誤這樣

Fatal error: Call to a member function load() on a non-object in app\code\local\Srivats\Weblog\controllers\IndexController.php on line 10 

這是我的索引控制器代碼

<?php 
class Srivats_Weblog_IndexController extends Mage_Core_Controller_Front_Action 
{ 
    public function testModelAction() 
    { 
     $params = $this->getRequest()->getParams(); 
     $blogpost = Mage::getModel('weblog/blogpost'); 
     echo("Loading the blogpost with an ID of ".$params['id']); 
     $blogpost->load($params['id']); 
     $data = $blogpost->getData(); 
     var_dump($data); 
    } 
} 

Blogpost.php文件

<?php 
class Srivats_Weblog_Model_Mysql4_Blogpost extends Mage_Core_Model_Mysql4_Abstract 
{ 
    protected function _construct() 
    { 
     $this->_init('weblog/blogpost','blogpost_id'); 
    } 
} 

這裏是我的配置文件

<?xml version="1.0" encoding="utf-8"?> 
     <config> 
      <global> 
       <modules> 
        <srivats_weblog> 
         <version>1.0.0</version> 
        </srivats_weblog> 
       </modules> 
       <models> 
        <weblog_mysql4> 
         <class>Srivats_Weblog_Model_Mysql4</class> 
         <resourceModel>weblog_mysql4</resourceModel> 
        </weblog_mysql4> 
       </models> 
      </global> 
      <frontend> 
       <routers> 
        <weblog> 
         <use>standard</use> 
         <args> 
          <module>Srivats_Weblog</module> 
          <frontName>weblog</frontName> 
         </args> 
        </weblog> 
       </routers> 
      </frontend> 
     </config> 

SYSTEM.LOG顯示

Warning: include() [function.include]: Failed opening 'Mage\Weblog\Model\Blogpost.php' for inclusion (include_path='app\code\local;E:\dev\app\code\community;app\code\core;E:\dev\lib;.;C:\php\pear') in lib\Varien\Autoload.php on line 93

這裏是鏈接到的所有文件https://gist.github.com/cf99e4277599954f38d4 我覺得這條線$blogpost->load($params['id']);造成trouble.What我是missing.Any指針?

回答

3

啊實際創建博客帖子模型類文件在你的配置,你應該有

<global> 
    <models> 
     <weblog> 
      <class>Srivats_Weblog_Model</class> 
      <resourceModel>weblog_mysql4</resourceModel> 
     </weblog> 
    </model> 
</global> 

您已經有mysql4資源添加這個最重要的是。你應該有

  <models> 
       <weblog> 
        <class>Srivats_Weblog_Model</class> 
        <resourceModel>weblog_mysql4</resourceModel> 
       </weblog> 
       <weblog_mysql4> 
        <class>Srivats_Weblog_Model_Mysql4</class> 
       </weblog_mysql4> 
      </models> 
+0

Nasaralla擁有它。 –

+0

@Nasaralla:你的回答是非常有用的,但仍然是同樣的錯誤。我已經上傳文件供你參考。 – blakcaps

+0

@Alan Storm:nope :)博客節點的類參考不應該包含'_Blogpost'。另外,不需要在資源模型節點(weblog_mysql4)中指定resourceModel。 –

0

你真正的問題是該行:

$blogpost = Mage::getModel('weblog/blogpost'); 

沒有返回一個對象,所以$博文僅僅是NULL。

是在app/code/local/Srivats/Weblog/Model/Blogpost.php

+0

我認爲路徑應該是'應用程序/代碼/本地/ Srivats /博客/ Model' ... – Simon

+0

@Simon:Path是應用程序/代碼/本地/ Srivats /博客/型號/ Mysql4 /。 – blakcaps

+0

@Simon他正在試圖加載模型的方式需要位於我指定的路徑中的文件。該配置反過來指定一個資源模型,應該使用Mage :: getResourceModel()來加載...並且應該知道路徑區分大小寫。 –