我通过修改将此代码添加到系统购物车库中,以访问位于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中,通过$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
文件夹中调用,但要小心将此类代码添加到catalog
和admin
中加载的system / library / request.php中。这会造成错误。