Как создать php-скрипт для единоразового запуска, допустим нужно сделать одну запись в базу данных, без создания модуля.
Также нужно создать новое подключение к бд mysql.
т.е. нужно использовать все возможности opencart mvc, но с новым подключением к бд
что то нужно типа такого: new \mysqli($hostname, $username, $password, $database)
и выполнить скрипт
Минимально для взаимодействия с базой с использованием контроллера и модели opencart
(проверено на версии 3), из кастомного скрипта, не пренадлежащего ни к admin
, ни к catalog
, необходимо следующее:
require_once('config.php'); // будет использован конфиг catalog, но это не принципиально
require_once(DIR_SYSTEM . 'startup.php');
// Registry
$registry = new Registry();
// Config
$config = new Config();
$config->load('catalog');
$registry->set('config', $config);
// Log
$log = new Log('custom_log');
$registry->set('log', $log);
date_default_timezone_set('UTC');
// Event
$event = new Event($registry);
$registry->set('event', $event);
// Event Register
if ($config->has('action_event')) {
foreach ($config->get('action_event') as $key => $value) {
foreach ($value as $priority => $action) {
$event->register($key, new Action($action), $priority);
}
}
}
// Loader
$loader = new Loader($registry);
$registry->set('load', $loader);
// Database
$registry->set('db', new DB(
$config->get('db_engine'),
$config->get('db_hostname'),
$config->get('db_username'),
$config->get('db_password'),
$config->get('db_database'),
$config->get('db_port'))
);
// данные сеты необходимы для использования стандартных методов моделей
$config->set('config_customer_group_id', 1);
$config->set('config_language_id', 1);
$config->set('config_store_id', 0);
Теперь минимально фреймворк собран, сдледующий шаг - контроллер. Он наследует system/engine/controller, что бы вся эта магия выполнялась.
// для примера, тащим все товары
class MyControllerCatalogProduct extends Controller
{
public function getList() {
$this->load->model('catalog/product');
$results = $this->model_catalog_product->getProducts([]);
return $results;
}
}
Собственно, инициализация и использование
$product = new MyControllerCatalogProduct($registry); // $registry = new Registry();
$product->getList();
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В цикле у меня перебираются страницы и загружаются
Собственно сабж в заголовкеВывожу товары через каталог, надо этот статус вывести