Модель Magento не работает - PullRequest
3 голосов
/ 19 июля 2011

Я следую этому уроку http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-5-magento-models-and-orm-basics.

Согласно этому уроку, когда я передаю значение с URL-адресом (http://localhost/dev/weblog/index/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 показывает

Предупреждение: include () [function.include]: Не удалось открыть «Маг \ Weblog \ Model \ Blogpost.php» для включения (Include_path = 'приложение \ код \ местный; E: \ DEV \ приложение \ код \ сообщество, приложение \ код \ ядро; E: \ DEV \ Lib;; C:. \ PHP \ груши') в lib \ Varien \ Autoload.php в строке 93

Вот ссылка на все файлы https://gist.github.com/cf99e4277599954f38d4 Я думаю, что эта строка $blogpost->load($params['id']); вызывает проблемы. Что мне не хватает. Есть указатели?

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

Ааа в вашей конфигурации у вас должно быть

<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 голосов
/ 19 июля 2011

Ваша настоящая проблема в том, что строка:

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

Не возвращает объект, поэтому $ blogpost просто NULL.

Действительно ли файл класса модели блога создан в app/code/local/Srivats/Weblog/Model/Blogpost.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...