致命错误:在opencart中调用未定义的方法Loader :: library()

时间:2015-11-07 11:20:07

标签: php opencart

我在opencart中遇到问题,启动用户面板以显示这样的错误。我是安装主题但显示错误。但默认情况下主题运行是好的。

Fatal error: Call to undefined method Loader::library() in C:\xampp\htdocs\shopify\catalog\controller\journal2\settings.php on line 20

并且代码是setting.php文件是

<?php
class ControllerJournal2Settings extends Controller {

private static $CACHEABLE = null;

private $css_settings = array();
private $js_settings = array();

protected $data = array();

protected function render() {
    return Front::$IS_OC2 ? $this->load->view($this->template, $this->data) : parent::render();
}

public function index() {
    $this->load->model('journal2/db');
    $this->load->model('tool/image');

    // admin mode
    $this->load->library('user');
    $this->user = new User($this->registry);
    if ($this->user->isLogged()) {
        $this->journal2->html_classes->addClass('is-admin');
    }

    // customer
    if ($this->customer->isLogged()) {
        $this->journal2->html_classes->addClass('is-customer');
    } else {
        $this->journal2->html_classes->addClass('is-guest');
    }

    // get current store config settings
    $db_config_settings = $this->model_journal2_db->getConfigSettings();
    foreach ($db_config_settings as $key => $value) {
        $this->journal2->settings->set('config_' . $key, $value);
    }

    // get active skin
    $skin_id = $this->journal2->settings->get('config_active_skin', 1);

    if (!$this->model_journal2_db->skinExists($skin_id)) {
        $skin_id = 1;
    }

如何解决它。 请帮忙。

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,尝试过Journal 2.3,2.4.8和2.5.5;全部使用opencart 2.1.0。

感谢本教程: http://code.tutsplus.com/tutorials/understand-registry-and-loader-objects-in-opencart--cms-23702

我注意到库没有函数定义来调用$ this-&gt; load-&gt; library();所以我在下面定义了我的节目:

    public function library($library) {
        $file = DIR_SYSTEM . 'library/' . str_replace('../', '', (string)$library) . '.php';

        if (file_exists($file)) {
            include_once($file);
        } else {
            trigger_error('Error: Could not load library ' . $file . '!');
            exit();
        }
    }

它对我有用,你也可以尝试一下。

答案 1 :(得分:1)

问题是由代码引起的:

$this->load->library('user');

只能运行版本&lt; 2.1

OpenCart版本随时都会进行代码更改,您应该始终更新到最新的主题版本,该版本始终修复此类错误。

答案 2 :(得分:1)

此方法已从2.1.0.1中删除,更容易通过编辑核心文件手动将其添加回来。

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <file path="system/engine/loader.php">
    <operation>
      <search index="0">
        <![CDATA[final class Loader {]]>
      </search>
      <ignoreif>
        <![CDATA[function library(]]>
      </ignoreif>
      <add position="after">
        <![CDATA[   public function library($library) {
        $file = DIR_SYSTEM . 'library/' . $library . '.php';

        if (file_exists($file)) {
            include_once($file);
        } else {
            trigger_error('Error: Could not load library ' . $file . '!');
            exit();
        }
    }]]>
      </add>
    </operation>
  </file>
</modification>

答案 3 :(得分:0)

启用OpenBayPro和eBay扩展程序时,您可能会因以下错误而导致网站崩溃:

  

致命错误:在第146行的/xyz/system/library/openbay/ebay.php中调用未定义的方法Loader :: library()

日志记录类存在问题我尚未跟踪,但如果您希望自己的网站快速恢复,只需打开文件system/library/openbay/ebay.php并注释掉第27行,这只会关闭对此扩展程序的日志记录的调用:

代码(全选):

if ($this->logging == 1) {
   //$this->setLogger();
}

<强>来源: