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

问题描述 投票:0回答:1

我通过修改将此代码添加到系统购物车库中,以访问位于catalog / model / extension / folder_name / file_name中的自定义模型:

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

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

虽然这个代码在我使用opencart 2.2.0.0时很好。

请帮忙...

opencart opencart2.x opencart-3 opencart-module opencart2.3
1个回答
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文件夹中调用,但要小心将此类代码添加到catalogadmin中加载的system / library / request.php中。这会造成错误。

© www.soinside.com 2019 - 2024. All rights reserved.