Как получить доступ к моей пользовательской модели, расположенной в каталоге из библиотеки system cart в opencart 2.3
Я добавляю этот код через модификацию в библиотеку system cart для доступа к моей пользовательской модели, расположенной в каталоге / 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');
}
Но там написано:: Неустранимая ошибка: Ошибка Uncaught: вызов функции-члена model () на null в opencart 2.3.0.2
Хотя этот код отлично подходит, когда я работаю на opencart 2.2.0.0.
Пожалуйста помочь...
Ответы - Как получить доступ к моей пользовательской модели, расположенной в каталоге из библиотеки system cart в opencart 2.3 / How to access my custom model located in catalog from system cart library in opencart 2.3

04.04.2019 04:37:01
вы правильно поняли идею, просто синтаксическая ошибка.
В OpenCart в файле контроллера загрузчик доступен через $this->load->model()
Но в системе / библиотеке / корзине / тележке.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
. это создаст ошибки.