Как получить доступ к моей пользовательской модели, расположенной в каталоге из библиотеки system cart в opencart 2.3

Как получить доступ к моей пользовательской модели, расположенной в каталоге из библиотеки system cart в opencart 2.3

03.04.2019 02:30:34 Просмотров 26 Источник

Я добавляю этот код через модификацию в библиотеку 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

Является ответом!
Dmitriy Zhuk

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. это создаст ошибки.

Закрыть X