Использование внешей базы данных в Joomla 5.2.1
Писать компонент импорта цен и остатков для Joomla 3 уже не актуально. Но можно написать компонент для Joomla 5, который будет работать с базой Joomla 3.
Добавляем поле в параметры:
<field name="external_database" type="subform" label="PLG_SYSTEM_MYPLUGGIN_FIELD_EXTERNAL_DATABASE_LABEL" multiple="false">
<form>
<field name="driver" type="databaseconnection" label="COM_CONFIG_FIELD_DATABASE_TYPE_LABEL" description="COM_CONFIG_FIELD_DATABASE_TYPE_DESC" supported="mysql,mysqli,pgsql,postgresql" filter="string" />
<field name="host" type="text" label="COM_CONFIG_FIELD_DATABASE_HOST_LABEL" required="true" filter="string" />
<field name="user" type="text" label="COM_CONFIG_FIELD_DATABASE_USERNAME_LABEL" required="true" filter="string" />
<field name="password" type="password" label="COM_CONFIG_FIELD_DATABASE_PASSWORD_LABEL" description="COM_CONFIG_FIELD_DATABASE_PASSWORD_DESC" filter="raw" autocomplete="off" lock="true" />
<field name="database" type="text" label="COM_CONFIG_FIELD_DATABASE_NAME_LABEL" required="true" filter="string" />
<field name="prefix" type="text" label="COM_CONFIG_FIELD_DATABASE_PREFIX_LABEL" default="jos_" filter="string" />
</form>
</field>
Создаём соединение в конструкторе модели:
$options = (array) $params->get('external_database');
$db = (new DatabaseFactory)->getDriver('mysqli', $options);
$this->setDatabase($db);
Теперь в модели $this->getDatabase()
будет возвращать объект для работы с внешней базой.