Вызов функции-члена load() для не-объекта в


Когда я изменяю статус брендов в расширении левой панели, я получаю эту ошибку, и она не меняет строку состояния 180 - это код ->load($leftpanelId)

Неустранимая ошибка: Вызов функции-члена load() для не-объекта в/home/thebeau9/public_html/app/code/local/Nextgeni/Leftpanel/controllers/Adminhtml/BrandsController.php на линии 180

public function massStatusAction()
{
    $leftpanelIds = $this->getRequest()->getParam('leftpanel');
    if(!is_array($leftpanelIds)) {
        Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
    } else {
        try {
            foreach ($leftpanelIds as $leftpanelId) {
                $leftpanel = Mage::getSingleton('leftpanel/leftpanel')
                    ->load($leftpanelId)
                    ->setStatus($this->getRequest()->getParam('status'))
                    ->setIsMassupdate(true)
                    ->save();
            }
            $this->_getSession()->addSuccess(
                $this->__('Total of %d record(s) were successfully updated', count($leftpanelIds))
            );
        } catch (Exception $e) {
            $this->_getSession()->addError($e->getMessage());
        }
    }
    $this->_redirect('*/*/index');
}

Config.xml

<global>
    <models>
        <leftpanel>
            <class>Nextgeni_Leftpanel_Model</class>
            <resourceModel>leftpanel_mysql4</resourceModel>
        </leftpanel>
        <leftpanel_mysql4>
            <class>Nextgeni_Leftpanel_Model_Mysql4</class>
            <entities>
                <brand>
                    <table>leftpanel_brand</table>
                </brand>
                <treatment>
                    <table>leftpanel_treatment</table>
                </treatment>
                <ingredient>
                    <table>leftpanel_ingredient</table>
                </ingredient>
            </entities>
        </leftpanel_mysql4>
        <!-- Paypal config model override - Gk on 03-08-2015 -->
        <paypal>
            <rewrite>
                <!-- Model -->
                <config>Nextgeni_Leftpanel_Model_Config</config>
            </rewrite>
        </paypal>
        <!-- Paypal config model override - Gk on 19-08-2015 -->
        <paypal>

Leftpanel.php в модели

 class Nextgeni_Leftpanel_Block_Leftpanel extends Mage_Core_Block_Template

 {

 public function _prepareLayout()
{
    return parent::_prepareLayout();
}

 public function getLeftpanel()     
 { 
    if (!$this->hasData('leftpanel')) {
        $this->setData('leftpanel', Mage::registry('leftpanel'));
    }
    return $this->getData('leftpanel');

}

}

Brand.php в модель

<?php

class Nextgeni_Leftpanel_Model_Brand extends Mage_Core_Model_Abstract

{

public function _construct()
     {
             parent::_construct();
             $this->_init('leftpanel/brand');
     }
 }
Author: paranoid kid, 2016-10-24

1 answers

Всякий раз, когда вы получаете такую ошибку:

Неустранимая ошибка: Вызов функции-члена load() для не-объекта

После вызова Mage::getModel('foo/bar') это означает, что класс, соответствующий foo/bar, не существует.

Что нужно проверить

Проверяет, что foo объявлено в вашем модуле config.xml в узле model:

<global>
    <models>
        <foo>
            <class>Vendor_Module_Model</class>
        </foo>
    </model>
</global>

Проверяет, что bar является существующей моделью в вашей папке Model: app/code/<codePool>/Vendor/Module/Model/Bar.php

В вашем случае

Magento ищет app/code/local/Nextgeni/Leftpanel/Model/Leftpanel.php но, согласно вашему комментарию, у вас нет такого файла.

Я не уверен, что делает ваш код, и вы опубликовали содержимое app/code/local/Nextgeni/Leftpanel/Model/Brand.php, поэтому я предположу, что это модель, которую нужно было использовать в вашем контроллере.

Таким образом, вы можете решить свою проблему, заменив:

$leftpanel = Mage::getSingleton('leftpanel/leftpanel')

С помощью:

$leftpanel = Mage::getSingleton('leftpanel/brand')
 0
Author: Raphael at Digital Pianism, 2016-10-24 10:47:03