opencart 2.0.3.1到2.3.0.2错误

时间:2016-11-09 13:19:02

标签: php opencart2.x opencart2.3

升级后我得到了这个错误。任何人都可以帮助我。

  

致命错误:未捕获的异常'异常',消息'错误:可能   不加载模型!'在   C:\ xampp \ htdocs \ deleteme \ system \ engine \ loader.php:169堆栈跟踪:#0   [内部函数]:Loader-> {closure}(Array,Array)#1   C:\ XAMPP \ htdocs中\ DELETEME \ SYSTEM \发动机\ proxy.php(25):   call_user_func_array(Object(Closure),Array)#2   C:\ XAMPP \ htdocs中\ DELETEME \目录\控制器\共同\ cart.php(37):   代理 - > __调用('getTotal',数组)#3   C:\ XAMPP \ htdocs中\ DELETEME \目录\控制器\共同\ cart.php(37):   代理 - > getTotal(数组)#4 [内部函数]:   ControllerCommonCart-> index(Array)#5   C:\ XAMPP \ htdocs中\ DELETEME \ SYSTEM \发动机\ action.php的(51):   call_user_func_array(Array,Array)#6   C:\ XAMPP \ htdocs中\ DELETEME \ SYSTEM \发动机\ loader.php(24):   Action-> execute(Object(Registry),Array)#7   C:\ XAMPP \ htdocs中\ DELETEME \目录\控制器\共同\的header.php(129):   Loader->控制器('common / cart')#8 [内部功能]:   ControllerCommonHeader-> index(Array)#9   C:\ XAMPP \ htdocs中\ DELETEME \ SYSTEM \发动机\ action.php的(51):   call_user_func_array(Array,Array)#10 C:\ xampp \ in   第169行的C:\ xampp \ htdocs \ deleteme \ system \ engine \ loader.php

1 个答案:

答案 0 :(得分:3)

升级问题是报告的错误,并在论坛here中解释了解决方案。

摘要(复制/粘贴为posternity):

  

BUG:错误:无法加载模型总计!

     

两部分错误。第一部分:事件兼容性切断了太多部分   尝试加载旧扩展格式时的路由。恩。   "延伸/总/ SUB_TOTAL / getTotal"路线变成了   "总/ SUB_TOTAL"而不是" total / sub_total / getTotal"。这导致   它试图加载一个没有名称抛出异常的模型。部分   二,这种兼容性在路由时正好被加载   "延伸/总/小计"但是当路线也在加载   "延伸/总/ SUB_TOTAL / getTotal&#34 ;.我认为这个事件不应该   触发了兼容性,因为它是一个getTotal函数   呼叫,而不是模型负载。这会导致验证失败并尝试   加载2.2.x版本,其他位丢失并抛出   不同的错误。 Haven没有弄清楚函数调用的原因   在事件路径上。但基本上是向后支持的尝试   与2.2 mods的兼容性导致问题。

     

2解决方案

     

FIX 1:放弃2.2.x兼容性并删除以下内容   遗留文件夹:

     catalog/model/total
     catalog/model/payment
     catalog/controller/payment
     catalog/model/shipping
     catalog/controller/module
     admin/controller/total
     admin/controller/payment
     admin/controller/shipping
     admin/controller/module
  

FIX 2:在函数调用时添加一个hack来绕过事件   " getTotal"," getMethod",或" getQuote"传入。这是   实验但至少应该恢复对2.2.x mods的支持   现在。这不是永久性修复。只是一个解决方案。   编辑:catalog / controller / event / compatibility.php查找:

'model/' . $route. '.php'
  

替换:

'model/' . ((strpos($route,'get') !== false) ? dirname($route) : $route) . '.php'
  

这应该让路由像" extension / total / sub_total"工作但阻止   "延伸/总/ SUB_TOTAL / getTotal"对目录失败的调用   检查。