Заменяем устаревший метод \Joomla\CMS\Form::getInstance в Joomla.
Документация Joomla сообщает что метод getInstance устарел с версии 4.3 и будет удален в 6.0. И предлагает использовать FormFactory service из контейнера.
Factory::getContainer()->get(FormFactoryInterface::class)->createForm($name, $options);
Так как пример кода из документации слишком краткий и может вызвать вопросы у начинающего разработчика, я попробую его расширить.
Было так:
<?php
// подключаем папку
\Joomla\CMS\Form::addFormPath(JPATH_SITE . '/components/com_jshopping/addons/tags/forms');
$form = \Joomla\CMS\Form::getInstance(
'configform',
'configform',
[
'control' => 'params',
'load_data' => true
],
false
);
Или так, если если используются файлы форм с одинаковыми именами:
<?php
$form = \Joomla\CMS\Form::getInstance(
'configform',
JPATH_SITE . '/components/com_jshopping/addons/tags/forms/configform',
[
'control' => 'params',
'load_data' => true
]
);
Пример исправленного кода с загрузкой xml-файла:
<?php
$form = Factory::getContainer()
->get(FormFactoryInterface::class)
->createForm(
'com_jshopping.addons.tags.configform', // имя формы, которое позволит идентифицировать её в плагинах
[
'control' => 'params',
'load_data' => true
]
);
if (!$form->loadFile(JPATH_SITE . '/components/com_jshopping/addons/tags/forms/configform.xml'))
{
throw new Exception('File loading error.');
}