реестр — OpenCart добавляет продукты в пользовательский скрипт php

Я хочу добавить продукты через мой скрипт, который не связан с OpenCart.

Например: somedir/index.php, Я пытаюсь сделать это следующим образом:

$productData = array(
'model' => 'ABC123',

'name'=>'aaa',
'description'=>'aaa',
'tag'=>'aaa',
...
);

require_once ('../../system/engine/model.php');
require_once ('../../admin/model/catalog/product.php');

$a= new ModelCatalogProduct();
$a->addProduct($productData);

Но есть много функций, которые должны быть запущены. Как этого достичь?

0

Решение

OpenCart использует так называемый MVC-шаблон. Этот паттерн работает в OpenCart очень специализированным и тесно связанным способом, поэтому вам нужен контекст системы маршрутизации на случай, если вы захотите использовать контроллеры и модели в своем коде.

Кроме того, это действительно зависит от того, какую версию вы используете, какая семантика будет правильной, так что трудно сказать. Концептуально, вы бы сделали что-то вроде этого:
— определить новый контроллер в структуре каталогов / admin / controller, т.е. /admin/controller/tool/product_import.php

  • Вызовите тот контроллер ControllerToolProductImport, который расширяет контроллер;
  • Создать индекс общедоступной функции ()
  • Пусть он загрузит модель как $ this-> load-> model («каталог / продукт»);
  • Теперь функция модели становится доступной, и вы будете использовать ее как $this->model_catalog_product->addProduct($productData);
  • Этот публичный индекс функции может быть вызван https: // имя хоста: порт / администратор / index.php маршрут = слишком / product_import&маркер = ABC (вы увидите, каким должен быть токен, войдя в раздел администратора). Чтобы вызвать другую функцию в этом контроллере напрямую (она должна быть общедоступной), вы можете легко расширить маршрут. Так что для публичной функции doSomething () это станет https: // имя хоста: порт / администратор / index.php маршрут = слишком / product_import / йоЗотеЬЫпд?&маркер = ABC.
  • При запуске этой функции из раздела администратора вы должны использовать для этого функции OpenCart. В зависимости от вашей версии это будет выглядеть следующим образом для 2.2.0.0:

    $this->url->link('tool/product_import', 'token=' . $this->session->data['token'], true)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]