在做Ecmall二次开发的时候遇到一个很奇葩的问题:
访问别的控制器的时候都没有问题,访问http://db.3322.org/index.php?api=user&act=test_login user控制器的时候每次都会爆出错误:
Fatal error: Call to a member function get() on a non-object in D:\xampp\htdocs\dabolo\app\frontend.base.php on line 45
查看提示的错误文件的代码:
function display($tpl)
{
$cart =& m('cart');
$this->assign('cart_goods_kinds', $cart->get_kinds(SESS_ID, $this->visitor->get('user_id')));
/* 新消息 */
$this->assign('new_message', isset($this->visitor) ? $this->_get_new_message() : '');
$this->assign('navs', $this->_get_navs()); // 自定义导航
$this->assign('acc_help', ACC_HELP); // 帮助中心分类code
$this->assign('site_title', Conf::get('site_title'));
$this->assign('site_logo', Conf::get('site_logo'));
$this->assign('statistics_code', Conf::get('statistics_code')); // 统计代码
$current_url = explode('/', $_SERVER['REQUEST_URI']);
$count = count($current_url);
$this->assign('current_url', $count > 1 ? $current_url[$count-1] : $_SERVER['REQUEST_URI']);// 用于设置导航状态(以后可能会有问题)
parent::display($tpl);
}
红色部分就是错误的地方,可是我都没有调用display()方法,怎么执行到这一步呢?
网上搜索了一下,有人说要在language文件夹下建立相应的文件,我也试过了,问题依然存在。
把所有缓存文件清掉,更改文件名称和控制器名称 ,都没有用。
最后,把原文件删了,重新创建这个文件,问题解决了。
坑爹,竟然是文件编码的问题,害我郁闷了好几天。