我正在尝试访问我的opencart的管理页面,但我收到此错误:
致命错误:在第73行的/home/xxxxxx/public_html/catalog/controller/common/header.php中的非对象上调用成员函数getFirstName()
我不是opencart的专家,但我认为管理员不应该从目录中访问文件。
实际上,配置看似正确。 有没有人见过这个错误?
这是在错误中被使用的行73
:
$this->data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', 'SSL'), $this->customer->getFirstName(), $this->url->link('account/logout', '', 'SSL'));
谢谢大家。错误是我复制了错误的文件并且愚蠢到不能彻底阅读代码。谢谢你们
答案 0 :(得分:0)
你是否检查了admin文件夹中的配置文件和root文件中的配置文件,如果它们配置正确的话?
您要显示的是根区域中的那个,请同时检查管理区域中的那个。 还可以尝试添加:
define('HTTPS_ADMIN', 'http://yourdomain.com/admin/');
管理员配置也应如下所示:
// HTTP
define('HTTP_SERVER', 'http://yourdomain.com/admin/');
define('HTTP_CATALOG', 'http://yourdomain.com/');
define('HTTP_IMAGE', 'http://yourdomain.com/image/');
// HTTPS
define('HTTPS_SERVER', 'http://yourdomain.com/admin/');
define('HTTPS_IMAGE', 'http://yourdomain.com/image/');
define('HTTPS_CATALOG', 'http://yourdomain.com/');
如果这些是这样设置的,那么代码中肯定存在一些错误。
答案 1 :(得分:0)
问题在于这一行:
$this->data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', 'SSL'), $this->customer->getFirstName(), $this->url->link('account/logout', '', 'SSL'));
=> => => ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
在管理时,$this->customer
为空,因为$customer
未注册(与目录相反,缺少$user
)。而不是在管理中,$user
对象已注册,因此您可以调用$this->user
。
因此你需要这样称呼:
$this->user->getUserName()
而不是
$this->customer->getFirstName()
如果您想获取登录用户的名字,则必须编辑核心文件system/library/user.php
并添加用于自己检索用户名字的方法和逻辑。