Работаем в лоб: Прямое редактирование XML форм Joomla
Используя событие onContentPrepareForm можно изменять почти любую форму Joomla, но методов класса Joomla\CMS\Form\Form обычно не хватает для работы со сложными формами (например с полями типа subform).
Но есть простое решение - работать с формой как c экземпляром SimpleXMLElement.
Получаем XML формы.
echo $form->getXml()->asXMl(); die;
Отправляем его в ChatGPT с описанием что и как надо изменить в форме, и просим написать PHP-код.
Например у меня такая форма:
<?xml version="1.0"?> <form> <config> <fieldset label="PLG_CONTENT_WISHBOXRADICALMARTCDEKORDERREGISTRATOR_FIELDSET_LABEL" name="wishboxradicalmartcdekorderregistrator" addfieldprefix="Joomla\Component\Wishboxradicalmartcdek\Administrator\Field"> <field name="wishboxradicalmartcdekorderregistrator" type="subform" label="PLG_CONTENT_WISHBOXRADICALMARTCDEKORDERREGISTRATOR_FIELD_REGISTRATOR_LABEL" buttons="add,remove,move" multiple="false" hiddenLabel="true"> <form> <fieldset> <field name="order_number_prefix" type="text" label="COM_WISHBOXRADICALMARTCDEK_FIELD_ORDER_NUMBER_PREFIX_LABEL" default="test_" /> </fieldset> </form> </field> </fieldset> </config> </form>
И для изменения атрибута default поля order_number_prefix получаем следующий код:
$fields = $xml->xpath('//field[@name="wishboxradicalmartcdekorderregistrator"]/form/fieldset/field[@name="order_number_prefix"]'); $fields[0]['default'] = 'Test ';
Это очень простой пример, но таким образом мы получаем почти неограниченые возможности для изменения форм.
