我正在通过修改将此代码添加到系统购物车库中,以访问位于目录/模型/扩展名/文件夹名称/文件名称中的自定义模型:
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上工作时,此代码很好。
请帮助...
答案 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
。这会造成错误。