Вызов функции-члена 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');
}
}
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')