Как получить доступ к моей пользовательской модели, расположенной в каталоге, из библиотеки системной корзины в opencart 2.3 - PullRequest
0 голосов
/ 03 апреля 2019

Я добавляю этот код путем модификации в библиотеку системной корзины, чтобы получить доступ к моей пользовательской модели, расположенной в каталоге / model / extension / имя_папки / имя_файла:

public function __construct($registry) {
global $loader;
$loader->model('extension/folder_name/file_name');
$this->model = $registry->get('model_extension_folder_name_file_name');
}

Но это говорит: Неустранимая ошибка: Uncaught Ошибка: вызов функции-члена модели () на ноль в открытой тележке 2.3.0.2

Хотя этот код в порядке, когда я работаю на opencart 2.2.0.0.

Пожалуйста, помогите ...

1 Ответ

1 голос
/ 04 апреля 2019

Вы правильно поняли, просто синтаксическая ошибка.

В 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, но будьте осторожны при добавлении такого кода в систему/library/request.php, который загружается как в catalog, так и admin.это создаст ошибки.

...