如何从Opencart 2.3中的系统购物车库访问位于目录中的自定义模型

时间:2019-04-03 11:30:35

标签: opencart opencart2.x opencart-3 opencart-module opencart2.3

我正在通过修改将此代码添加到系统购物车库中,以访问位于目录/模型/扩展名/文件夹名称/文件名称中的自定义模型:

public function __construct($registry) {
global $loader;
$loader->model('extension/folder_name/file_name');
$this->model = $registry->get('model_extension_folder_name_file_name');
}

但是它说: 致命错误:未捕获错误:在null上调用成员函数model() 在opencart 2.3.0.2中

当我在opencart 2.2.0.0上工作时,此代码很好。

请帮助...

1 个答案:

答案 0 :(得分:1)

您的想法正确,只是语法错误。

在OpenCart的控制器文件中,可通过$this->load->model()

访问加载程序

但是在system / library / cart / cart.php中,您的代码应如下所示

public function __construct($registry) {
    $registry->get('load')->model('extension/folder_name/file_name');
    $this->model = $registry->get('model_extension_folder_name_file_name');
}
  

这是因为您直接在system / library / cart / cart.php中进行访问,在这里您可以从构造中访问$registry,但是没有__get()__set()这样的函数控制器和模型都有。

     

有趣的是,$ this-> load-> model方法实际上检查调用购物车的位置(是从catalog文件夹还是admin文件夹中),并相应地加载。 >      

可以安全地将模型加载到cart.php中,因为它仅在catalog文件夹中被调用,但是要小心地将这样的代码添加到system / library / request.php中,这两个代码都在{ {1}}和catalog。这会造成错误。