#opencart #opencart2.x #opencart-3 #opencart-module #opencart2.3
#opencart #opencart2.x #opencart-3 #opencart-модуль #opencart2.3
Вопрос:
Я добавляю этот код путем модификации в системную библиотеку корзины, чтобы получить доступ к моей пользовательской модели, расположенной в каталоге / 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');
}
Но там написано:
Неустранимая ошибка: неперехваченная ошибка: вызов функции-члена model() с нулевым значением
в opencart 2.3.0.2
Хотя этот код работает нормально, когда я работаю на opencart 2.2.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 которая загружается как вcatalog
, так иadmin
. это приведет к возникновению ошибок.