Opencart 2.3 通知:未定义 属性:代理:: function_name

Opencart 2.3 Notice: Undefined property: Proxy:: function_name

我正在使用 Opencart 2.3,我已经在系统中安装了一个新的扩展,从那时起我在前端的产品描述页面中收到错误消息:

Undefined property: Proxy:: function_name**

上传的扩展在管理部分,产品描述页面在安装新扩展之前工作正常。

注意:扩展有vqmod文件,modification文件夹有扩展相关的文件。

我有这个。 我的问题是我的扩展路径是

extension\module\name_here

但是因为我刚从 1.5.6 升级它,它只有 module\name_here。我忘记更改 class 名称以匹配新路径。

class Model**Extension**Modulename_here extends Model {

缺少扩展名。 这个错误真的很晦涩,只有在 github 上找到它才明白我的错误是什么。

我在 Live Server 中遇到过这个问题。但问题是我已经加载了模块并正确调用了它。但是,它对我没有任何帮助。

$this->load->model('catalog/product');
$this->model_catalog_product->addmyproducts($myproducts);

class Model**Extension**Modulename_here extends Model {

解决这个问题的方法是弄清楚
OpenCart Framework 中的架构是如何工作的?
按照以下解决方案:

  • 在Opencart目录下找到 /system/storage/modification/admin.
    这里可以看到MVC目录
  • 在modification文件夹下,你会发现上面写的所有代码
  • 您需要识别模型中模块的调用部分是否已定义?
  • 识别后你会发现函数定义不存在就是这个原因!
  • 此外,如果您在目录 /system/storage/modification/admin/.../... 下定义相同的函数,您将永远不会看到未定义的 属性:Proxy::module_name

更新

无论定义的函数如何,如果在单个文件下有两个同名函数被调用两次,则会在 vqmod 模块中引发歧义

例如。调用方法 getWarehouseDetails() 如果它位于 index()warehousedetails() 中的另一个在单个文件中,在加载 $this->load->model(../..); 时使用两个不同的文件名进行两次不同的调用你会得到

Notice: Undefined property: Proxy::getWarehouseDetails in /var/www/html/bluemb/vqmod/vqcache/vq2system_storage_modification_system_engine_action.php on line 51

在下面,例如。 getWarehouseDetails() 在 index() 中调用,另一个在 warehousedetails() 中调用

$this->load->model('tool/upload');
$warehouse_details = $this->model_tool_upload->getWarehouseDetails($seller_id);

$this->load->model('catalog/information');
$this->data['warehouse_details'] = $this->model_catalog_information->getWarehouseDetails($seller['seller_id']);